bash - unix shell 脚本 - jot -r 1 1 4 是什么意思?我可以用 seq 替换 jot 吗?
问题描述
我是 unix 和 shell 脚本的新手。我正在编写一个脚本,将训练和测试图像文件名写入两个列表:
train.list
test.list
COUNT=-1
for folder in $1/*
do
COUNT=$[$COUNT + 1]
for imagesFolder in "$folder"/*
do
if (( $(jot -r 1 1 $2) > 1 )); then
echo "$imagesFolder" $COUNT >> train.list
else
echo "$imagesFolder" $COUNT >> test.list
fi
done
done
我得到了错误:
/convert_images_to_list.sh:第 31 行:记事本:找不到命令
./convert_images_to_list.sh:第 31 行:((:> 1:语法错误:预期操作数(错误标记为“> 1”)
我尝试更改jot
为seq
,错误是:
eq: 无效选项 -- 'r'
./convert_images_to_list.sh:第 31 行:((:> 1:语法错误:预期操作数(错误标记为“> 1”)
我还检查了 'seq --help'
哪个说seq [OPTION]... FIRST INCREMENT LAST
。如果我jot -r 1 1 &2
想使用seq
而不是jot
.
非常感谢你。
解决方案
您可能不需要jot
或seq
; 您只是想生成一个介于 1 和$2
. 只要$2
不是太大并且您不太担心使用均匀分布,您可以将其替换为
# $RANDOM yields a value between 0 and 32767
# Thus, $RANDOM % $2 yields a value between 0 and $2 - 1
if (( $RANDOM % $2 > 0 )); then
...
推荐阅读
- python - 如何在不调用 Python 中的方法的情况下更改类中的属性值?
- hibernate - Hibernate Unknown 列字段列表“clazz_”
- javascript - Access-Control-Allow-Headers 它究竟做了什么以及为什么将它包含在响应中?
- java - maven 提供了自己的 postgreSQL 驱动程序依赖项,但没有看到它
- android - 从 JSON 文件获取特定数据到列表视图
- arrays - 如何使用 MongoDB 聚合按顺序将数组与中间元素匹配
- python - 在 Python 文件中读取和写入数据
- javascript - Vue Highcharts“类型错误:无法读取未定义的属性‘图表’”
- testing - 如何在 Saucelabs 中从我的 MAC 运行 testcafe 测试?
- java - 正则表达式替换字符串中的第二个结束标记