2017-04-14 2 views
-2

私はまた戻ってきました:( まだbashのいくつかの問題は、スクリプトをオプション-rを読んでからさらに操作してみようとしていることです。 "./stripchars:line 20:-r:そのようなファイルやディレクトリはありません"そして、もう一つは "./stripchars:line 26:ne:コマンドが見つかりません" ここにフィードバックを得ました。私のコードは次のとおりです。getopts関数について

#!/bin/bash 
FILE=$1 
while getopts "r:" o; do 
case "${o}" in 
    r) 
     r=${OPTARG} 
     ;; 
    *) 
     ;; 
esac 
done 
shift $((OPTIND-1)) 
if [ ! -z "$FILE" ] 
then 
exec 0< "$FILE" 
fi 
while IFS='' read -r LINE 
do 
echo "$LINE" | tr -d '${r}' 
done 
if [ -z "${r}" ] 
then 
if [ ! -z "$FILE" ] 
then 
    exec 0< "$FILE" 
fi 
while IFS='' read -r LINE 
    do 
    echo "$LINE" | tr -d '[:punct:]' 
    done 
fi 

答えて

1

ファイル名が実際に最初の引数(FILE=$1によって暗示される)である場合には、getoptsがゼロ以外の終了ステータスを持ってすぐに(最初argumenので、 tはオプションではありません)、ループに入ることはありません。あなたは

myscript -r whatever foo.txt 

のようなものに自分のコールを変更し、オプションを解析し、ループの後FILE=$1を移動する必要があります。

関連する問題