Bash 打印001、002、…、099、100而不是1、2、3、…、99、100
我想打印以下格式的2个数字: 001002003,…,015016017,…,098099100 因为我在接触{001..100};做 对于接触的j{001..100};做 如果$j>$i;然后 回声$i$j fi 完成 完成 循环执行我希望它执行的操作 但问题是它打印出来时没有0。例如,它打印12、13、1、4、…、99100。 我要打印001 002,001 003,001 004,099 100. 有人知道我该如何解决这个问题吗?使用seq: printf也可以工作。使用以下命令:Bash 打印001、002、…、099、100而不是1、2、3、…、99、100,bash,command-line,Bash,Command Line,我想打印以下格式的2个数字: 001002003,…,015016017,…,098099100 因为我在接触{001..100};做 对于接触的j{001..100};做 如果$j>$i;然后 回声$i$j fi 完成 完成 循环执行我希望它执行的操作 但问题是它打印出来时没有0。例如,它打印12、13、1、4、…、99100。 我要打印001 002,001 003,001 004,099 100. 有人知道我该如何解决这个问题吗?使用seq: printf也可以工作。使用以下命令: pr
printf也可以工作。一种可能是使用printf:
for i in {1..100}; do
for j in {1..100}; do
if (( $j > $i )); then
printf "%03d %03d\r\n" $i $j
fi
done
done
一种可能是使用printf:
for i in {1..100}; do
for j in {1..100}; do
if (( $j > $i )); then
printf "%03d %03d\r\n" $i $j
fi
done
done
bash4中增加了前导零的保留;您似乎正在使用较旧版本的bash。但是,如果保留0,则必须调整比较,以避免将值视为八进制数。例如,090是一个无效的八进制数
for i in {001..100}; do
for j in {001..100}; do
if (( 10#$j > 10#$i )); then
echo $i $j
fi
done
done
不过,最好将printf与C样式for循环一起使用
for ((i=1; i < 101; i++)); do
for ((j=i+1; j < 101; j++)); do
printf '%03d %03d\n' "$i" "$j"
done
done
注:没有可比性;内部循环以大于i的值开始j。在bash 4中添加了前导零的保留;您似乎正在使用较旧版本的bash。但是,如果保留0,则必须调整比较,以避免将值视为八进制数。例如,090是一个无效的八进制数
for i in {001..100}; do
for j in {001..100}; do
if (( 10#$j > 10#$i )); then
echo $i $j
fi
done
done
不过,最好将printf与C样式for循环一起使用
for ((i=1; i < 101; i++)); do
for ((j=i+1; j < 101; j++)); do
printf '%03d %03d\n' "$i" "$j"
done
done
注:没有可比性;内部循环以大于i的值开始j。我得到这个错误行10::09:对于基本错误标记来说太大的值是09Right。我只解决了你要求的问题。比较正确基数中的数字是另一个历史问题。我得到了错误行10::09:对于基数错误标记来说,值太大是正确的。我只解决了你要求的问题。比较正确基数中的数字是另一个历史问题。为什么输出中有回车符?为什么输出中有回车符?第一部分仍然打印没有0的数字,但printf有效。你知道第一个版本缺少什么吗?正如我在第一句中所说的,你使用的bash版本似乎太旧了;使用较新版本的bash。第一部分仍然打印没有0的数字,但printf可以工作。你知道第一个版本缺少什么吗?正如我在第一句中所说的,你使用的bash版本似乎太旧了;使用较新版本的bash。