2016-09-19 39 views
-1

我期待下面的循環來打印數字:從擊意外的輸出循環中使用大括號

#!/bin/bash 
# Basic range in for loop 
for value in {1..5} 
do 
    echo $value 
done 

但我得到的一行以下的輸出: {} 1..5

我究竟做錯了什麼?

+1

最有可能你錯誤​​地運行腳本,例如:'sh script.sh' .. – Sundeep

+1

你是如何運行你的腳本? – melpomene

+1

[不同的方式來運行bash腳本](http://stackoverflow.com/documentation/bash/300/hello-world/1136/hello-world#t=201609190352481927018) – Sundeep

回答

0

{1..5}不一定像你期望的那樣在任何情況下都能正常工作。一個更好的辦法來做到這一點(在我看來,至少)是使用seq

for value in $(seq 1 5) 
do 
    echo $value 
done 

seq是包括在基本上每產生由它的兩個參數決定的數字序列Unix的一個簡單的程序。

+0

對於'bash ':對此使用'seq'是矯枉過正的。它正在浪費一個過程,用於內置的東西。僅當其中一個(1或5)是變量時才使用'seq'。對於'sh':沒有比'seq'更簡單的選項。 – anishsane

+0

@塞巴斯蒂安感謝您的建議。我知道seq,但我不確定爲什麼大括號不起作用。 –