
例えば下記のようなコードのシェルを実行したときにrmコマンドを意図的に失敗させて「失敗」を表示させるにはどうすればよいでしょうか?
rmコマンドは例えなので、rmコマンドに限らず他のコマンドでも共通で意図的に失敗させることができるような方法を教えてほしいです。
#!/bin/csh -f rm /etc/test if $? != 0 then echo "成功" else echo "失敗" end exit 0
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
既に解決済ですが、以下の方法もありますという程度で。
PATHを消す。
PATH=
組み込みコマンド以外は失敗するようになります。
投稿2017/06/08 07:07
総合スコア6621
0
ベストアンサー
失敗させたいコマンドを alias で false にしてはどうでしょう?
参考情報
- false - 何もせずに失敗する
http://kazmax.zpp.jp/cmd/f/false.1.html
追記:
質問文にある csh のスクリプト(すこしだけ変更してる)の実行結果を, 事前に alias することで変化させる例を示します。
投稿2017/06/07 21:13
編集2017/06/08 14:41総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

2017/06/08 00:46

退会済みユーザー
2017/06/08 10:40

退会済みユーザー
2017/06/08 21:08

退会済みユーザー
2017/06/09 11:34

退会済みユーザー
2017/06/09 11:37

退会済みユーザー
2017/06/09 11:45
2017/06/09 12:41

退会済みユーザー
2017/06/10 06:33
2017/06/11 01:02

退会済みユーザー
2017/06/11 04:54
2017/06/11 08:04

退会済みユーザー
2017/06/11 13:05
2017/06/12 02:36

0
適当な(そのコマンドが受け付けない)パラメータ指定するとか。
なにをしたいのかがイマイチ分かりませんが
その辺を書いたら違った回答がでるかも?
--- 追記 ---
自分だったら、コピーしたスクリプトに修正を入れて確認します。
で、その差分をもってテストの担保にする感じ。
ヘタにアレな手段で確認していくと、いざってときに
原因が特定できなくてはまったりしそうな予感が…
投稿2017/06/07 14:01
編集2017/06/08 06:29総合スコア7468
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/06/07 21:23

0
任意のコマンドを、失敗させる共通的な方法はありません。
rm /etc/test
であれば、/etc/test
をファイルでなくディレクトリにすれば失敗します。
あるいは、/etc
に書き込み権限の無いユーザーで実行するか。
コマンドがビルトインコマンドでも、フルパス指定でも無ければ、こういう方法もありますね。
Bash
1$ mkdir ~/foo 2$ PATH=~/foo:$PATH 3$ cp /bin/false ~/foo/rm 4$ hash -r 5$ touch bar 6$ rm bar # ~/foo/rm つまり /bin/false が実行される 7$ echo $? 81
% mkdir ~/foo % set path=(~/foo $path) % cp /bin/false ~/foo/false % rehash % touch bar % rm bar % echo $? 1
ただし、テストしたいrm
以外のrm
コマンドも全部失敗します。「1つ目のrm
は失敗するが、それ以外のrm
は成功したい」というのは対象スクリプトを書き換えないと無理かな。
投稿2017/06/07 12:47
総合スコア86295
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/06/07 12:55

退会済みユーザー
2017/06/07 13:15 編集

退会済みユーザー
2017/06/07 21:24

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/08 10:38