Solaris10を使用しています。
コマンドの実行結果をそのまま変数として使用するために
以下のスクリプトを実行したところ・・
--------------------
#!/bin/sh
read a b c <<EOF
`ls -l aaa.log`
EOF
echo $a
echo $b
echo $c
--------------------
「ls -l aaa.log」の結果は、-rw-r--r-- 1 root root 211 1月 13 11:58 aa.log となるので
$a=-rw-r--r--
$b=1
$c=root
という結果を期待していたのですが、「/tmp/sh*** cannot open!」とエラーとなってしまいます。***は任意の数字です。
/tmpには上記で cannot open! となった「sh***」よりひとつ若い番号のファイルが作成され、
中は「ls -l aaa.log」の結果が記載されていました。
CentOS5.2、Cygwinでは期待した結果が得られたのですが、SolarisではNGでした。
何かSolaris特有の問題でもあるのでしょうか?ご教示願います。
No.2ベストアンサー
- 回答日時:
試しに FreeBSD の sh と Linux でも実行してみましたが、ちゃんと動作しますので Solaris がちょっと、という気はします。
それで代替方法ですが、
v=`ls -l aaa.log`
set -- $v
a=$1
b=$2
c=$3
とかは昔から良く利用しますよね。shift も使えるので loop でも使えます。
または、
a=${v%% *}
b=${v#* }
などの置換も場合によってはいいかも。
個人的にもSolarisなのかぁという気はしていました。。
代替方法までご提示していただき、大変助かりました。
ありがとうございました!
No.1
- 回答日時:
CentOSはLinux、CygwinはUNIXもどきのWindowsツール
どちらもSolarisとは違いますね。同じ結果を期待する方が間違ってます。
Solaris特有の問題とみなすか、CentOSやCygwinの問題と見なすかは見解の相違でしょうね。
逆のケースだってたくさんありますから。
ちなみにそのシェルスクリプトを
sh -x シェルスクリプト
で実行したらどうなりますか?
sh -x で実行しても出力されるエラーに変化はありませんでした。
このスクリプトでは対応できなさそうということが分かったので
別な方法で対応したいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- UNIX・Linux 実行の仕方及び実行結果が分かりません。 2 2022/11/17 19:31
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
バッチファイルの内容を表示さ...
-
VScodeのエラー解決法 Pythonの...
-
「読み取りと実行」と「読み取...
-
シェルで5分前の時間を取得したい
-
VBScriptでコマンドプロンプト...
-
VBAでバッチファイルを1つ実行...
-
[teraterm] waitコマンドで停止...
-
ネットワーク名が見つかりません
-
Accessの最適化について DBengi...
-
Windows System32 Security Hea...
-
Powershellとコマンドプロンプト
-
16進数の変換処理
-
Cをコマンドプロンプトから実行...
-
これってパソコンの最適化が完...
-
VB.NETでのDOSコマンドを実行に...
-
Excel VBA ステップインが途中...
-
vbsファイルをPC起動時に実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
「読み取りと実行」と「読み取...
-
VBscriptが起動しない?
-
バッチファイルの内容を表示さ...
-
Excel VBA ステップインが途中...
-
[teraterm] waitコマンドで停止...
-
エクセル フォルダの画像を画...
-
ネットワーク名が見つかりません
-
VB.NETでのDOSコマンドを実行に...
-
Excel(エクセル) VBA プロシー...
-
複数のbatファイルを自動実行し...
-
Excelのセルの内容をコマンドプ...
-
PDFファイルを開き、印刷し、閉...
-
Access の VBA 実行中に他の操...
-
これってパソコンの最適化が完...
-
バッチファイルが不正終了して...
-
VBA 既に開いているBookに継続...
-
VScodeのエラー解決法 Pythonの...
-
【VB.NET】exeを実行すると「発...
おすすめ情報