shell指令碼中如何輸出變數的變數例子

來源:互聯網
上載者:User


問題背景:

#!/bin/sh
PHP=100;
JAVA=101
LANGUAGE="PHP JAVA"
for lang in $LANGUAGE
do
      //這裡想逐行輸出100, 101  該怎麼寫呢?
done

解決方案-數字字串:

#!/bin/sh PHP=100;
JAVA=101
LANGUAGE="PHP JAVA" for lang in $LANGUAGE do
    echo $[$lang]
done

解決方案-字母字串:

#!/bin/sh
LANGUAGE=(PHP JAVA)
LANGUAGE_VALUE=(/data/1 /data/2)
for ((i=0;i< ${#LANGUAGE[@]};i++))
do
    echo ${LANGUAGE_VALUE[$i]}
done


shell 指令碼匯出環境變數


如果你想用一個bash指令碼來匯出一些環境變數給bash shell使用,就會碰到一些問題。因為每一個bash指令碼是唯一的一個會話,這些環境變數只會在其自己的指令碼裡起作用,對於下一次要用到的這些環境變數,bash shell中還是不存在。

例如:

在 env.sh 指令碼中包含有下面的語句:

export HELLO=hello
export HELLO2=world
當你運行完 env.sh 以後,再接著執行 echo $HELLO $HELLO2 在bash shell中,你不會得到任何東西。

正確的匯出環境變數的方法是 使用source命令來從你的bash指令碼中匯出環境變數。

$ source env.sh
$ echo $HELLO $HELLO2
$ hello world
你能放env.sh指令碼到 /usr/bin 目錄下,接著在任何路徑下執行 source env.sh ,它都能很好地工作。在這裡你要使用source命令來代替直接執行運行指令碼。但我意識到,很多使用者沒有意識到source命令的作用。

在linux的世界中,你還有另外一種方法來使用這些環境變數在單獨的一個環境中,而不影響其他shell的使用。就是

bash -i

通過bash指令碼建立一個新的互動bash會話,當你不在使用它的時候,通過exit來退出即可。
下面為例子:
############################################
build_arm.sh

#!/bin/bash
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
export PS1="\e[31mBUILD_ARM \w \e[m\n\$"
############################################

$ bash -i

接著,
$./build_arm.sh

BUILD_ARM ~ $

當你不在使用它的時候,
BUILD_ARM ~ $ exit

$

這樣就退出到起初的bash shell了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.