完全なコマンドをファイルにエコー

完全なコマンドをファイルにエコー

次のコマンドがあります

echo “more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST” >> NOTNY.sh && chmod 0777 NOTNY.sh 

ただし、コマンドを実行してNOTNY.shの内容を見ると、次のものが含まれます。

“more PHONEBOOK.lst

それを含める必要があります

more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST

得られた結果ではなく、コマンドのテキストをどのようにコピーしますか?

答え1

「スマート」引用符の代わりに一般的な「二重引用符」を使用してください。

printf "%s\n" "more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

moreまたは、awkが指定したファイルを読み取るため、awkへの無意味な呼び出しを保存してください。

printf "%s\n" "awk '!/ NY /' PHONEBOOK.lst | sort -k1 | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

または、2番目の項目がsort最初の項目を上書きするので、次のようにします。

printf "%s\n" "awk '!/ NY /' PHONEBOOK.lst | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

関連情報