タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

シェルスクリプトに関するfudafootaのブックマーク (2)

  • [覚書]シェルスクリプトでスペースや空白を含むファイル名を処理したいの対策

    ファイル名に空白とか入っていると、ファイル名のリストが入った引数の変数をforで回したときに、空白でファイル名が分割されちゃって期待した動きにならないよね。 ファイル名に空白てかスペースがあっただけで処理で躓くって、シェルスクリプトってショボ過ぎじゃん。シェル力はもったいない IFS環境変数を使え 対策はフィールドセパレータ環境変数を設定するだけの事で、具体的にはIFSに改行をセットすれば良い。 IFSに改行(\n)をセットすることで、入力の一行を一ファイル名として容易に処理することが可能。 なお、IFS(IFS変数)とはInternal Field Separatorであり、安心の標準機能。 #!/bin/bash IFS=" " for FILE in `find . -type f -print` do md5sum "$FILE" done > hoge.txt (上記の場合重要な

    [覚書]シェルスクリプトでスペースや空白を含むファイル名を処理したいの対策
    fudafoota
    fudafoota 2016/02/14
    スペースが含まれてるファイル名を大量に処理したときに役立った
  • シェルスクリプトでの$@の罠

    B! 39 0 0 0 シェルスクリプトを書いてる時に$@を使って ハマったのでそれについて。 $@と$* -fや-dの罠 まとめ $@と$* $@はシェルスクリプト 1 ではスクリプトや関数の中で全ての引数を表します。 $ f(){ echo $@;} $ f a b c a b c な感じ。 ここで、次の様なスクリプトを考えてみます。 atmark.sh 1 2 3 4 5 6 #!/usr/bin/env bash if [ "$@" != "" ];then echo "$@" else echo empty fi これを実行してみると $ ./atmark.sh a a $ ./atmark.sh ./atmark.sh: line 2: [: unary operator expected empty! $ ./atmark.sh a b ./atmark.sh: line 2

    シェルスクリプトでの$@の罠
  • 1