bashスクリプトに「awk」を入れると、なぜ失敗するのですか?

bashスクリプトに「awk」を入れると、なぜ失敗するのですか?

プロンプトで:

ls | awk '{printf("%s\t\t%s\n", $9, $3);}'

印刷する内容を正常に印刷しました。これをファイルに入れると、4〜5本の空行が表示されます(およそ出力の行数ls)。

$ cat awk-file-owner-simple 
#!/bin/bash
ls | awk '{printf("%s\t\t%s\n", $9, $3);}'
$ ./awk-file-owner-simple 
_
_
_
_

これは_空行を表します(Stackexchangeのコードフォーマッタを使用して表示できません)。

ベストアンサー1

に変更ls |ls -l |

明らかにシェルでエイリアスを使用していますlsls -lおそらく関数やその他のオプション)。これを使ってtype ls実際に実行していることを確認してください。スクリプトにはエイリアスがないため、正常に実行され、ls単一の出力列があります。

おすすめ記事