- ベストアンサー
コマンドのを教えてください
以下のコマンドが思うように動きません。 Ubuntuで実行しています。 xとyの乱数を出してそれを${x}と${z}に入れて実行したいのですが数字が入りませんなぜなのでしょうか? 教えてください #!/bin/bash SCREEN_NAME='minecraft' x='echo $RANDOM' z='echo $RANDOM' sudo screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "spreadplayers ${x} ${z} @a\015"'
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>sudo screen -S $SCREEN_NAME -X stuff 'setworldspawn ${x2} ${y2} ${z2}\015' #2の方が例で書かれた部分だけしか目に入ってないようなんですけど 注意されたものが上記の部分にも見当たりませんか。
その他の回答 (3)
- _kappe_
- ベストアンサー率68% (1600/2328)
回答No.2の者です。 バッククオートを使っても、クオート無しで単に$RANDOMを使っても、想定通りに動作しました。下記の結果を見てください。 $ cat random.sh x='echo $RANDOM' y=`echo $RANDOM` z=$RANDOM echo x = ${x} echo y = ${y} echo z = ${z} $ bash random.sh x = echo $RANDOM y = 10633 z = 13281
お礼
ありがとうございます!助かりました!
補足
そちらのコマンドは動作するようになりました。 ですが以下のコマンドは正常に作動せず「${x2} ${y2} ${z2}」の部分が0(値が表示されない)です。 #!/bin/bash SCREEN_NAME='minecraft' y2=`echo $RANDOM` z2=`echo $RANDOM` x2=`echo $RANDOM` sudo screen -S $SCREEN_NAME -X stuff 'setworldspawn ${x2} ${y2} ${z2}\015'
- _kappe_
- ベストアンサー率68% (1600/2328)
シングルクオートではなくバッククオートを使ってください。バッククオートは、日本語キーボードの場合Shift+@で入力できます。 × x='echo $RANDOM' ○ x=`echo $RANDOM` しかし、この場合はわざわざechoを使う必要はなく、単純に x=$RANDOM でいいのではないかと。
補足
#!/bin/bash x=`echo $RANDOM` z=`echo $RANDOM` echo ${x} ${z} のスクリプトでも表示されませんでした
- wormhole
- ベストアンサー率28% (1626/5665)
シングルクォテーションで囲んだ場合、シェル変数の展開等はしないですよ。
お礼
ありがとうございます!見落としてました。