目錄在腳本中,我有這條線的Linux:訪問包含空格
#!/bin/sh
log="${var}logs/console logs/since2_%m-%d-%Y.log" # <-- console logs has a space
我如何可以訪問此文件?
把引號喜歡:
log="${var}logs/"console logs"/since2_%m-%d-%Y.log"
抵消了引號它,逃避引號使得它試圖找到包含字符「
目錄在腳本中,我有這條線的Linux:訪問包含空格
#!/bin/sh
log="${var}logs/console logs/since2_%m-%d-%Y.log" # <-- console logs has a space
我如何可以訪問此文件?
把引號喜歡:
log="${var}logs/"console logs"/since2_%m-%d-%Y.log"
抵消了引號它,逃避引號使得它試圖找到包含字符「
問題不在於問題中引用的內容。這是一個可用的示例腳本。除了定義之外,請注意使用$日誌的引用。如果您需要進一步的幫助,請發佈完整腳本或人員可以運行的最小工作子集來重現問題。
#!/bin/sh
var=/tmp/
log="${var}logs/console logs/since2_%m-%d-%Y.log"
mkdir -p "$log"
rmdir "$log"
fortune | tee "$log"
echo ----
cat "$log"
+1這是一個很好的例子:它將(1)引用到'log'時引用該值,(2)將「$ log」作爲參數展開時引用該引用。 – karmakaze 2011-05-19 07:22:36
變量$ IFS包含字段分隔符,默認情況下是空格,所以請嘗試
oldifs="$IFS"
IFS="
"
log="${var}logs/console logs/since2_%m-%d-%Y.log"
# do whatever you want with $log now
IFS=$oldifs
您遇到的問題可能是您使用$ log的位置,您應該使用「$ log」來保留空格。
didn 't work'./starter.sh:line 5:log =/home/duke/aa/servers/demo/var/logs/console logs/since2_%m-%d-%Y.log:沒有這樣的文件或目錄' – dukevin 2011-05-19 06:44:57
同意了,日誌的定義會沒問題,但是當你使用$ log nother聲明它將被解釋爲沒有周圍引號的單獨單詞。 – Tom 2011-05-19 06:50:00
@凱文:karmakaze的回答是正確的。如果你仍然有問題,它在腳本的不同部分。發佈整個腳本。 – Gilles 2011-05-19 07:01:43
如果你打算今天在該文件名日期:
log="$(date "+${var}logs/console logs/since2_%m-%d-%Y.log")"
touch "$log"
我建議你使用%Y-%m-%d
作爲排序都cronologically和詞彙。
我認爲你需要提供更多的信息,或許是一個簡單的測試程序。您顯示的某些錯誤消息不會在代碼中發生。 – 2011-05-19 06:53:11
@Seth那些下面提供的 – dukevin 2011-05-19 06:56:56