unix shell script- jot -r 1 1 4 是什么意思?我可以用 seq 替换 jot 吗?
unix shell script- what does jot -r 1 1 4 mean? can I replace jot with seq?
我是 unix 和 shell 脚本的新手。
我正在编写一个脚本,将训练和测试图像文件名写入两个列表:
train.list
test.list
COUNT=-1
for folder in /*
do
COUNT=$[$COUNT + 1]
for imagesFolder in "$folder"/*
do
if (( $(jot -r 1 1 ) > 1 )); then
echo "$imagesFolder" $COUNT >> train.list
else
echo "$imagesFolder" $COUNT >> test.list
fi
done
done
我收到错误:
/convert_images_to_list.sh: line 31: jot: command not found
./convert_images_to_list.sh: line 31: ((: > 1 : syntax error: operand expected (error token is "> 1 ")
我试图将 jot
更改为 seq
,但错误是:
eq: invalid option -- 'r'
./convert_images_to_list.sh: line 31: ((: > 1 : syntax error: operand expected (error token is "> 1 ")
我还检查了 'seq --help'
,上面写着 seq [OPTION]... FIRST INCREMENT LAST
。
如果我想使用 seq
而不是 jot
.
,jot -r 1 1 &2
会被替换成什么
非常感谢。
jot -r 1 1
产生一个介于 1
和 </code> 之间的随机数。您不能将其替换为 <code>seq
。但是你可以用 shuf -i1- -n1
代替它 Ubuntu 应该有。
作为上述答案的替代方案,我可以通过将 jot -r 1 1 &2
替换为 for
循环来解决 select 将部分图像文件夹分为两个列表或类别的问题从数字序列到 select。
for imagesFolder in "$folder"/*
do
for t in $(seq 1 1 )
do
if (( t > 1 )); then
echo "in train"
echo "$imagesFolder" $COUNT >> train.list
else
echo "in test"
echo "$imagesFolder" $COUNT >> test.list
fi
done
done
您可能不需要 jot
或 seq
;你只是想生成一个介于 1 和 </code> 之间的随机整数。只要 <code>
不是太大并且您不太关心使用均匀分布,就可以将其替换为
# $RANDOM yields a value between 0 and 32767
# Thus, $RANDOM % yields a value between 0 and - 1
if (( $RANDOM % > 0 )); then
...
我是 unix 和 shell 脚本的新手。 我正在编写一个脚本,将训练和测试图像文件名写入两个列表:
train.list
test.list
COUNT=-1
for folder in /*
do
COUNT=$[$COUNT + 1]
for imagesFolder in "$folder"/*
do
if (( $(jot -r 1 1 ) > 1 )); then
echo "$imagesFolder" $COUNT >> train.list
else
echo "$imagesFolder" $COUNT >> test.list
fi
done
done
我收到错误:
/convert_images_to_list.sh: line 31: jot: command not found
./convert_images_to_list.sh: line 31: ((: > 1 : syntax error: operand expected (error token is "> 1 ")
我试图将 jot
更改为 seq
,但错误是:
eq: invalid option -- 'r'
./convert_images_to_list.sh: line 31: ((: > 1 : syntax error: operand expected (error token is "> 1 ")
我还检查了 'seq --help'
,上面写着 seq [OPTION]... FIRST INCREMENT LAST
。
如果我想使用 seq
而不是 jot
.
jot -r 1 1 &2
会被替换成什么
非常感谢。
jot -r 1 1
产生一个介于 1
和 </code> 之间的随机数。您不能将其替换为 <code>seq
。但是你可以用 shuf -i1- -n1
代替它 Ubuntu 应该有。
作为上述答案的替代方案,我可以通过将 jot -r 1 1 &2
替换为 for
循环来解决 select 将部分图像文件夹分为两个列表或类别的问题从数字序列到 select。
for imagesFolder in "$folder"/*
do
for t in $(seq 1 1 )
do
if (( t > 1 )); then
echo "in train"
echo "$imagesFolder" $COUNT >> train.list
else
echo "in test"
echo "$imagesFolder" $COUNT >> test.list
fi
done
done
您可能不需要 jot
或 seq
;你只是想生成一个介于 1 和 </code> 之间的随机整数。只要 <code>
不是太大并且您不太关心使用均匀分布,就可以将其替换为
# $RANDOM yields a value between 0 and 32767
# Thus, $RANDOM % yields a value between 0 and - 1
if (( $RANDOM % > 0 )); then
...