###bashで、コマンドのネスト「$(command)」を利用して変数に代入した時の、実施結果の取得方法を知りたい
###目的
grepの実行結果が0じゃなかったら終了させたいです。
※サンプルなので、実際にはファイルの有無を知りたい訳ではないです。
bash
1#!/bin/bash 2 3aaa=$(ls -1 ./directory | grep file ) 4ret=${PIPESTATUS[1]} 5if [ ${ret} -ne 0 ];then 6 exit 1 7fi 8 9echo finish
→'${PIPESTATUS[1]}
が取得できず失敗
###問題点
- 1.「${PIPESTATUS[1]}」が受け取れていない
- 2.
aaa=$(ls -1 ./directory | grep file || exit 2 )
などとやっても出来ない
→サブシェルで動いているから - 3.
aaa=$(ls -1 ./directory | grep file ) || exit 2
などとやっても出来ない
→代入が成功したかを受け取っているから。
###備考
出来ればaaa=$(ls -1 ./directory | grep file )
の1行で終わらすぐらいの簡単な書き方が出来ればなーと思っています。
何かいい方法ないでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/28 02:21
2017/07/28 02:27