我期待下面的循環來打印數字:從擊意外的輸出循環中使用大括號
#!/bin/bash
# Basic range in for loop
for value in {1..5}
do
echo $value
done
但我得到的一行以下的輸出: {} 1..5
我究竟做錯了什麼?
我期待下面的循環來打印數字:從擊意外的輸出循環中使用大括號
#!/bin/bash
# Basic range in for loop
for value in {1..5}
do
echo $value
done
但我得到的一行以下的輸出: {} 1..5
我究竟做錯了什麼?
{1..5}
不一定像你期望的那樣在任何情況下都能正常工作。一個更好的辦法來做到這一點(在我看來,至少)是使用seq
:
for value in $(seq 1 5)
do
echo $value
done
seq
是包括在基本上每產生由它的兩個參數決定的數字序列Unix的一個簡單的程序。
對於'bash ':對此使用'seq'是矯枉過正的。它正在浪費一個過程,用於內置的東西。僅當其中一個(1或5)是變量時才使用'seq'。對於'sh':沒有比'seq'更簡單的選項。 – anishsane
@塞巴斯蒂安感謝您的建議。我知道seq,但我不確定爲什麼大括號不起作用。 –
最有可能你錯誤地運行腳本,例如:'sh script.sh' .. – Sundeep
你是如何運行你的腳本? – melpomene
[不同的方式來運行bash腳本](http://stackoverflow.com/documentation/bash/300/hello-world/1136/hello-world#t=201609190352481927018) – Sundeep