2013-03-20 71 views
2

此follwing代碼是我正在編寫的腳本的一部分。現在,爲了這個腳本的目的,我假定./src中只有一個文件,所以這個循環只應該執行一次。現在,在某個地方的循環中,我想獲取$ f(文件名)的前4個字符並將其存儲在另一個變量中。我知道有切割命令,但我不確定是否會在這裏使用,因爲我認爲剪切被用於文件內容,而不是文件本身。將文件名的前4個字符存儲到變量中

for f in `ls ./src` 
do 
    echo $f 
    cd tmp 
    f="../src/$f" 
    sh "$f" 
done 
+0

謝謝你的答案! – zyxxwyz 2013-03-20 20:49:05

回答

5

http://tldp.org/LDP/abs/html/string-manipulation.html

子串提取從$位置$字符串

${string:position} 提取物串。

如果$ string參數是「*」或「@」,那麼這將提取從$ position開始的位置參數[1]。

${string:position:length} 從$位置的$ string中提取子字符串的$ length字符。

shortName=${f:0:4} 

玩得開心!

4

您可以使用純bash的方式:

${parameter:offset:length} 

即獲得$HOME變量的第一個字符:

echo ${HOME:0:4} 

順便說一句你的腳本也存在錯誤(從未解析LS輸出)。它應該是這樣的:

for f in ./src/* 
do 
    echo $f 
    cd tmp 
    f="../src/$f" 
    first4=${f:0:4} 
    sh "$f" 
done 
+0

出於某種原因,我得到一個「錯誤的替代」錯誤。你知道這可能是爲什麼嗎? – zyxxwyz 2013-03-20 20:55:45

+0

請在你的問題中發佈你的最新腳本,我可以調試。 – anubhava 2013-03-20 20:57:04

+0

其實我只是google了一下,這似乎是因爲我在使用sh時應該使用bash。感謝您的幫助! – zyxxwyz 2013-03-20 20:57:55

相關問題