次の形式のファイルがあります
User:blala
Pass:blala
IP:***.***.**.**
IFSを試してみましたが、うまくいきません。
input="/path/to/your/input/file.cvs"
while IFS=',' read -r f1 f2 f3 f4 f5 f6 f7
do
echo "$f1 $f2 $f3 $f4 $f5 $f6 $f7"
done < "$input"
シェルスクリプトからユーザー、パス、IP値を取得したいと思います。
助けてください。
ベストアンサー1
を使用したい場合がありますが、eval
パスワードにランダムな文字(コードで実行することができるか、実行される予定)が含まれる可能性があるため、危険があります。 「そうしないでください!」
これはうまくいきます - 配列を使用してください。
テストファイルの内容
User:blala
Pass:blala with spaces: and colons: and $PATH
IP:***.***.**.**
set -f # disable globbing
IFS=$'\n' # 'word' split only at newline char
value=($(sed 's/:/\n./' file)) # '.' to cater for empty value fields
echo user="${value[1]/./}"
echo pass="${value[3]/./}"
echo ip="${value[5]/./}"
出力:
user=blala
pass=blala with spaces: and colons: and $PATH
ip=***.***.**.**