腳本需要的是使得bash腳本退出和打印錯誤消息,如果用戶調用腳本錯誤
#!/bin/bash
# Check if there are two arguments
if [ $# -eq 2 ]; then
# Check if the input file actually exists.
if ! [[ -f "$1" ]]; then
echo "The input file $1 does not exist."
exit 1
fi
else
echo "Usage: $0 [inputfile] [outputfile]"
exit 1
fi
# Run the command on the input file
grep -P "^[\s]*[0-9A-Za-z-]+.?[\s]*$" "$1" > "$2"
編輯,腳本已更改爲
grep -P "^[\s]*[0-9A-Za-z-]+.?[\s]*$" $*
if [ ! -f "$1" ]; then
echo 'Usage: '
echo
echo './Scriptname inputfile > outputfile'
exit 0
fi
調用腳本不帶參數沒有給出誤差修改和坐在空白
Usage:
./Scriptname inputfile > outputfile
我的代碼
位grep -P "^[\s]*[0-9A-Za-z-]+.?[\s]*$" $*
此代碼拉那對他們的單個字線和泵輸出到一個新的文件,因此,例如
This is a multi word line this the above line is not now once again wrong
輸出將是
This
now
該代碼的作品,用戶調用代碼使用./scriptname file > newfile
但是,我試圖展開代碼,以便在用戶錯誤地調用腳本時爲用戶提供錯誤消息。
對於錯誤messange,我想回顯scriptname file_to_process > output_file
回來的東西。
我曾嘗試
if [incorrectly invoted unsure what to type]
echo $usage
exit 1
Usage="usage [inputfile] [>] [outputfile]
但是我有一點運氣。代碼運行,但如果我用腳本名稱調用,則什麼也不做。另外,如果我只用scriptname和輸入文件調用腳本,它將輸出結果而不是退出並顯示錯誤消息。
我試圖其他的有
if [ ! -n $1 ]; then
echo 'Usage: '
echo
echo './Scriptname inputfile > outputfile'
exit 0
fi
鑑於答覆到目前爲止,我已經收到,現在我的代碼是
#!/bin/bash
grep -P "^[\s]*[0-9A-Za-z-]+.?[\s]*$" $*
if [ ! -f "$1" ]; then
echo 'Usage: '
echo
echo './Scriptname inputfile > outputfile'
exit 0
fi
當調用腳本,而不輸入文件中的腳本不執行任何操作,並具有用ctrl + c中止,仍然嘗試獲取調用消息的回顯。
你使用'/ bin/bash'還是'/ bin/sh'? –
我正在使用bin/bash – Ausghostdog
在命令行中使用'「$ @」'而不是'$ *';用空格保留文件名參數中的空格。如果在表達式前面使用'grep -P -e「...你的正則表達式」'-e「,那麼用戶可以在'-n'或'-l'上鍵入命令行和'grep'會適當地修改它的行爲。 (在GNU'getopt()'用來排列參數的系統上,你可能不需要指定'-e';我不喜歡那個特性。) –