※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトだと動かない [ -L fileS ] && echo "シンボリックリンクです")
シェルスクリプトでシンボリックリンクの確認方法
このQ&Aのポイント
コマンドライン上でカレントディレクトリにあるfileSがシンボリックリンクであるか調べる方法を学習しました。
しかし、シェルスクリプトで同様の確認を行おうとするとエラーが発生しました。
どこが間違っているのかわからないため、ご教授いただけると助かります。
シェルスクリプトだと動かない [ -L fileS ] && echo "シンボリックリンクです"
コマンドライン上で
カレントディレクトリにある fileS がシンボリックリンクであるか調べる事ができるか、学習しております。コマンドライン上で
[ -L fileS ] && echo "シンボリックリンクです"
と打つと、動作する事を確認しました。
しかし、シェルスクリプトで(slink.sh)
=======================
#!/bin/sh
[ -L fileS ] && echo "シンボリックリンクです"
=======================
と、同ディレクトリにスクリプトファイルを作成。
chmod ug+x slink.sh して
./slink.sh と打つと
slink.sh: test: 引数が足りません。
と怒られます。
どこがどのように間違っているかわからないので
ご教授いただけないでしょうか
お願い致します。
お礼
ご連絡ありがとうございます。 原因がわかったので報告いたします。 原因: OSがSolarisを使っていた為、シェルスクリプト上で動作する [ -L fileS ] (testコマンド)は、組み込み系のtestコマンドを呼び出していました。組み込み系のtestコマンドは -L をサポートしていないので 外部コマンドのtestを呼び出す為に command [ -L fileS ] として記述しなければならない事を確認いたしました。 よって、コマンドライン上では外部コマンドを明示しなくても外部コマンドを呼び出している事で [ -L fileS ] && echo "シンボリックリンクです" だけで、動作するとわかりました。 以上、ご教授有り難うございました。