• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:@前の変数代入について)

シェルスクリプトでの変数代入方法について

h271015の回答

  • ベストアンサー
  • h271015
  • ベストアンサー率71% (62/87)
回答No.1

最後の $UID で表示される内容が、標準入力から受け取った値ではなく環境変数UIDの値になっているように思います。 (記載内容からroot で実行されており、rootの uidは0) 「read -p "@より前のユーザ名を入力してください。 ( "入力名:ユーザ名" ) : " UID」 の「UID」を別の名称にすることで改善しないでしょうか。

関連するQ&A

  • メールボックス容量変更のシェルスクリプトについて

    メールボックスの容量変更を行うシェルスクリプトを作成しましたが、以下のとおりユーザ名が代入されません。 どのように記載することで@前にユーザ名が代入できますでしょうか。 当方シェル初心者のため、ご教示頂ければ幸いでございます。 ■実行結果(詳細) --------------------------------------------------------------------------------------------------------------[root@test root]# /bin/bash -x mailquota1.sh + alias 'rm=rm -i' + alias 'cp=cp -i' + alias 'mv=mv -i' + '[' -f /etc/bashrc ']' + . /etc/bashrc +++ id -gn +++ id -un +++ id -u ++ '[' root = root -a 0 -gt 99 ']' ++ umask 022 ++ '[' '' ']' + echo -n 'メールボックス容量を設定するメールアドレスを入力してください。 ( 入力名:ユーザ名 ドメイン名 ) : ' メールボックス容量を設定するメールアドレスを入力してください。 ( 入力名:ユーザ名 ドメイン名 ) : + read UID DOMAIN info example.co.jp mailquota1.sh: line 3: UID: readonly variable + echo -n '新しいメールボックス容量を入力してください。 ( 入力例:50m' ' ) : ' 新しいメールボックス容量を入力してください。 ( 入力例:50m ) : + read CAPA 10m + /home/vpopmail/bin/vsetuserquota 0@example.co.jp 10m --------------------------------------------------------------------------------------------------------------

  • シェルの変数セットについて

    どなたか教えてください。 以下のようなUNIXのシェルを作ってみたのですが変数がうまくセットされません。 これは仕様なんでしょうか??? シェルはkshでシェルの中でsuしているユーザはcshです。 例: ==test.sh== #!/bin/ksh A1="test test" su - user1 <<EOF echo "A1 :" $A1 set A2 =(test test) echo "A2 : " $A2 EOF exit ==実行結果== %./test A1 : test test A2 : %

  • Bシェルにてユーザの実行可否

    シェルにてrootユーザのみ実行が出来るようにしたいと思い、以下のようなシェルを書きました。 が、root以外のユーザでも実行が可能となってしまっています。実行する上でシェル、またはシェル以外で影響はあるのでしょうか?ご存知でしたらご教授願います。 ※今回はユーザID:user1で作成+実行しています。 ※このシェルのアクセス権限は"-rwxr--r--"としています。 #!/bin/sh UID=`whoami` if [ $UID -ne root ] then echo "実行はrootのみ" fi -以降、その他の処理が続く-

  • シェルスクリプトのYes、Noの入力ロジックに関する質問

    こんにちは。 よろしくお願いします。 Linux(RHEL5)にて、以下のようなシェルスクリプトを作成しました。 ユーザにアンインストールを問い合わせるもので、 yesの時は処理が進み、noの時は処理が中断、 それ以外を入力した場合、再入力を促すようにしています。 echo "" echo "*** アンインストールを実行しますか? ***" read -p "  >>> 実行する場合「yes」、しない場合は「no」を入力してください <<< " YESNO while (test $YESNO != yes) && (test $YESNO != no) do echo "" read -p "  >>> 「yes」もしくは「no」を入力してください <<<  " YESNO done if (test $YESNO == yes) then continue else echo "****** アンインストールをキャンセルしました ******" && exit fi しかし、 何も入力せずに「Enter」を押した場合、 本来なら、再入力を促すように表示したいのですが、 以下のようにエラーが出て、終了してしまいます。 XXX.sh: line YYY: test; !=; unary operator expected XXX.sh: line ZZZ: test; ==; unary operator expected ****** アンインストールをキャンセルしました ****** 恐らくロジックのどこかに見落としがあると思うのですが、 原因がよく分かりません。 よろしくお願いします。

  • シェルスクリプトのYes、Noの入力ロジックに関する質問

    こんにちは。 よろしくお願いします。 Linux(RHEL5)にて、以下のようなシェルスクリプトを作成しました。 ユーザにアンインストールを問い合わせるもので、 yesの時は処理が進み、noの時は処理が中断、 それ以外を入力した場合、再入力を促すようにしています。 echo \"\" echo \"*** アンインストールを実行しますか? ***\" read -p \"  >>> 実行する場合「yes」、しない場合は「no」を入力してください <<< \" YESNO while (test $YESNO != yes) && (test $YESNO != no) do echo \"\" read -p \"  >>> 「yes」もしくは「no」を入力してください <<<  \" YESNO done if (test $YESNO == yes) then continue else echo \"****** アンインストールをキャンセルしました ******\" && exit fi しかし、 何も入力せずに「Enter」を押した場合、 本来なら、再入力を促すように表示したいのですが、 以下のようにエラーが出て、終了してしまいます。 XXX.sh: line YYY: test; !=; unary operator expected XXX.sh: line ZZZ: test; ==; unary operator expected ****** アンインストールをキャンセルしました ****** 恐らくロジックのどこかに見落としがあると思うのですが、 原因がよく分かりません。 よろしくお願いします。

  • MySQLのデータをシェルの変数に入れる方法

    お世話になります。 ユーザ名とパスワードを入力させるフォームをPHPで作成し、 MySQLのSpoolに書き込むものを作りました。 やりたいことはシェルスクリプト(bash)を用いて、Spoolの データをシェルの変数に入れ、その変数を基にLinuxのユーザを 作成しようと思っています。 以下シェルスクリプトでMySQLのデータを表示することは出来たのですが、 echo 'use test;select * from spool'|mysql -u root -ppassword 表示したデータを変数に入れることが出来ません。 $test='use test;select * from spool'|mysql -u root -ppassword echo $test どのようにしたら上手くできるでしょうか? 皆様のテクニックを御教授下さい。 環境 OS-CentOS4.4 MySQL-4.1.20

  • HTTPのBASIC認証につきまして。

    こんにちは、kanpoと申します。 PHPマニュアルに以下のような記述があったのですが 下記について質問させてください。 manual start======================================================= Example 2-1. HTTP 認証の例 <?php if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "ユーザーがキャンセルボタンを押した場合に送られるテキスト\n"; exit; } else { echo "こんにちは $PHP_AUTH_USER.<P>"; echo "あなたは、パスワードとして $PHP_AUTH_PW を入力しました。<P>"; } ?> 単に $PHP_AUTH_USER、$PHP_AUTH_PW を出力するのではなく、 ユーザー名とパスワードの有効性をチェックしたいと思うかもしれません。 その場合、クエリーをデータベースに送るか、ある dbm ファイル中の ユーザーを調べるといったことをすることになるでしょう。 manual end========================================================= この、”クエリーをデータベースに送るか”というところなんですが これはUID&PASSをDBに登録されている情報と照合をかけるという意味だと思うのですが、ポップアップWindowで入力されたUID&PASSを.htaccessにかかれたUID&PASSで認証しそのUID&PASSをDBによりもう一度照合するということでしょうか? それとも、ポップアップで入力してもらったUID&PASSをそのままDBにて認証できるのでしょうか? よろしくご教授ください。

    • ベストアンサー
    • PHP
  • サブドメインとmod_rewrite

    あるレンタルサーバーで独自ドメインでサイトを運営していますが、以下のようなサブドメインの扱いを実現できる方法を探しています。 使用している独自ドメイン example.com 構成 /home/user01/www/index.html /example/index.php レンタルサーバーのエイリアス設定で「example.com」または「www.example.com」で/example/index.phpを表示するよう設定。 やりたいこと ブラウザのアドレスバーへ入力 → 実際のURL(飛ばし先) http://user.example.com/ → http://example.com/index.php?p=user http://abcd.example.com/ → http://example.com/index.php?p=abcd サブドメインは事実上クエリーなので、userの場合はとかabcdの場合はといった、事前定義的なものができません。 レンタルサーバーのためバーチャルホストは使えません。htaccessとmod_rewriteは使用可能なため、なんとかこれらで実現できないかと考えています。 これに近いことができるという表記が http://www.kawaz.jp/pukiwiki/?mod_rewrite#w1eddb33 にありましたが、自分の環境で試したところ「サーバーが見つかりません」と表示されうまく動きませんでした。最後の改行とか、そのへんのところは大丈夫です。 詳しい方、教えていただけないでしょうか。よろしくおねがいします。

  • シェルスクリプトの変数

    Bシェルのスクリプトで入力した情報を書き出すというスクリプトで詰まってしまったので、アドバイスをお願いできますでしょうか? #!/bin/sh # COUNTER変数のリセット COUNTER=1 # 繰り返す回数を入力 read KURIKAESHI # KURIKAESHIで入力した回数入力を受け取り、出力する while [ $COUNTER -le $KURIKAESHI ];  do # 必要な情報の入力("NYUURYOKU_{COUNTER変数の数字}"の変数に入れる)   read NYUURYOKU_$COUNTER   echo "$NYUURYOKU_$COUNTER" ←※ココ   COUNTER=`expr $COUNTER + 1` done 上記のようなスクリプトを書き、"$NYUURYOKU_$COUNTER"の値を出力したいのですが、何かよい方法はありますでしょうか? echo "$NYUURYOKU_$COUNTER" と記述しただけでは、$NYUURYOKU_と$COUNTERとバラバラになってしまいます。(当然っちゃ当然ですが・・・) 何かよい方法がありましたらご教授お願いいたします。

  • UNIXのshでの入力受付について

    またまたシェル関係で質問です。 sh上で入力受付をさせたいときは通常 「read 変数名」 をいれて入力受付をさせています。 ですが、今やっている現象でこの入力受付が スルーされているという現象が起きていて悩んでいます。 ※ ソース例 ls -l | while read VAL_A ; do echo "test" read VAL_B ← ここで入力受付がスルーされる done  そこで質問なのですが、read以外にキー入力受付を 実現できるコマンドというものは存在するのでしょうか? もしなければ、回避方法は存在するのでしょうか? ちなみに実行環境は OS:HP-UX11.0 となっています。それでは宜しくお願いします。