質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

3576閲覧

Linuxのif文で変数の中身を確認し書き換えるコマンドを作成したいのですが

bookcat100

総合スコア19

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2020/07/16 15:04

始めまして。今月からLinux(sentOS)を学び始め、つい先日やっとシェルスクリプトの書き方までたどり着きました。
自分自身でシェルスクリプトを作成していて疑問に思う点がありましたので、どなたか詳しい方ご教授いただければ幸いです
以下が自分で作成して試したシェルスクリプトになります。

export sum = a

if [ -n "$sum" ] ; then

$sum = A

else

echo NG

fi

環境変数sumの中身をaとして設定し
if文の中で条件式には「環境変数sumの中身が空文字列でなければ」を設定し
真であればsumの中身をAに書き換える、というようなif文を作成したつもりだったのですが
コマンド実行後にecho $sumと入力してもaのままになっています

変数の中身が〇〇の場合は中身を●●に書き換えるという単純なシェルスクリプトを作ってみたかったのですが
コマンドのどこに不備があるのかどなたか教えていただけないでしょうか?
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

環境変数やシェル変数への値の設定はsum=asum=Aのように書き、=の前後に空白を入れてはいけません。実際にコマンドラインでsum = aを実行して、どのように解釈されるか確かめてみるといいでしょう。

また、$sum=Aと書いたのでは、sumの値aが展開されa=Aを実行することになります。

さらに言うと、シェルスクリプトの中で環境変数の値を変更しても、その値が有効なのはそのシェルスクリプトの中と、そこから起動されるプロセスだけです。シェルスクリプト終了後のコマンドラインでsumの値を確認してもそれは変更されていません。

Bash

1#!/bin/bash 2export sum=a 3if [ -n "$sum" ] ; then 4 sum=A 5 echo $sum 6else 7 echo NG 8fi

ということを理解した上で、source ファイル名. ファイル名とコマンドラインで実行すれば、echo $sumするとAとなっているのを確認できるはずです。

投稿2020/07/16 15:45

編集2020/07/17 01:33
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bookcat100

2020/07/17 08:33

分かりやすい回答をしていただきありがとうございます。 シェルスクリプトの中で変数の値を変更しても、それはあくまで一時的なものだったのですね いい勉強をさせていただきました。ありがとうございます。
Daregada

2020/07/17 08:39

末尾に書いてあるように、sourceコマンドを使えば、現在のシェル(たいていは、端末でコマンドを対話的に実行するシェル)でスクリプトを実行して、そこで設定されている環境変数の値を使い続けることができます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問