

シェルスクリプト内で、引数に指定したパスの一番下のディレクトリを取得したいと思い、以下のように書きました。

■test.sh

[code]

    #! /bin/sh
    
    myfol=`awk -F"/"  '{print $NF} ${1}`
    mylog=2016_${myfol}.txt
    touch ${mylog}
    
[/code]

■実行時

[code]

    test.sh /var/log/aaa_sever
    
[/code]

■エラーメッセージ

> awk : 警告 : コマンドライン引数 `/var/log/aaa_server`はディレクトリです：スキップされました

awkがだめなのかと考え、sedに変更してみても、やはり同じようなエラーが出てしまいます。  
2016_aaa_server.txtというファイルを作成するにはどのようにしたらよいでしょうか。


CC BY-SA 3.0
2016-02-19T12:35:57.720
22274
2016-02-20T10:30:52.227
2016-02-20T04:14:22.307
9807
9807
question
linux bash shellscript awk
シェルスクリプト内で、パスにawkをかける方法を教えてください


awk に拘らないのであれば、 basename
というコマンドが正にパスの最後の部分のみを取り出してくれるコマンドです。ちなみに、対となるコマンドとして、最後の部分以外を取り出す、 dirname
というコマンドもあります。

[code]

    myfol=`basename "${1}"`
    
[/code]

awk を使うのであれば、加工する文字列を、awkが標準入力から読み込めるようにしてみて下さい。echo
で表示させたテキストをパイプで繋いで読み込むのが簡単です。 sed を使う場合も同様です。

[code]

    myfol=`echo -n "${1}" | awk -F "/" '{print $NF}'`
    
[/code]


CC BY-SA 3.0
2016-02-19T12:55:29.007
22276
2016-02-20T10:30:52.227
2016-02-20T10:30:52.227
7831
7831
22274
answer