2013-09-22 50 views
4

我正在編寫一個shell腳本(Bash在Mac OS X)重命名一堆圖像文件。我想要的結果是:如何將printf語句的結果賦值給一個變量(用於前導零)?

frame_001 
frame_002 
frame_003 

這裏是我的代碼:

let framenr=$[1 + (y * cols * resolutions) + (x * resolutions) + res] 
echo $framenr: 
let framename=$(printf 'frame_%03d' $framenr) 
echo $framename 

$framenr看起來是正確的,但$framename始終成爲0。爲什麼?

回答

8

let命令部隊算術評估,引用的「變量」不存在,所以你得到默認值0

y=5 
x=y; echo $x  # prints: y 
let x=y; echo $x # prints: 5 

而是執行此操作:

framenr=$((1 + (y * cols * resolutions) + (x * resolutions) + res)) 
echo $framenr: 

# if your bash version is recent enough 
printf -v framename 'frame_%03d' $framenr 
# otherwise 
framename=$(printf 'frame_%03d' $framenr) 

echo $framename 

我記得讀某處$[ ]已被棄用。改爲使用$(())

相關問題