當前位置:首頁 » 編程軟體 » shell調用其他腳本變數

shell調用其他腳本變數

發布時間: 2023-10-30 23:49:11

㈠ Linux的shell腳本for循環怎麼調用位置變數

1、利用$@, $#, $*參數或shift移位參數進行循環
2、例1
#!/bin/sh
while [ $# -gt 0 ]; do
echo $1
shift;
done
3、例2
#!/bin/sh
until (($#==0)); do
echo $1
shift;
done
4、例3
#!/bin/sh
for x in $*;do
echo $x
done
5、例4
#!/bin/sh
for x in $@;do
echo $x
done

㈡ shell調用其他腳本函數

使用位置參數:

b.sh裡面這樣寫

#!/bin/bash
basha.sh10020

a.sh里這樣寫

#!/bin/bash
number=$1
number_1=$2
functionfun1(){
echo$1
}
functionfun2(){
echo$1
}
fun1$number

指出幾點問題:

你的原腳本里為什麼fun_get=fun1

這樣做沒什麼意義;

fun2並沒有用到。

㈢ shell 如何啟動另外一個腳本執行,並傳遞參數

子shell變數傳遞給父shell,中間可以保存個臨時文件讓父shell去讀。
下邊是一個子shell,傳遞給父shell的一個例子,僅做參考
#!/bin/bash
(
subvar="hello shell"
echo "$subvar" > temp.txt
)
read pvar < temp.txt
echo $pvar

㈣ shell腳本中調用腳本

裡面有個錯誤,time 是個命令,不能用來做變數,這是致命的!
----------------
我給個測試腳本你試一下:
.............
#!/bin/sh
flag=0
plan_hour=19
plan_minutes=47
plan_time=`echo -n "$plan_hour";echo -n "$plan_minutes"`
clear

while true
do
hour=`date +"%H"`
minutes=`date +"%M"`
seconds=`date +"%S"`
time1=`echo -n "$hour";echo -n "$minutes"`
clear
echo -n "現在的時間為: "
echo -n $hour
echo -n :
echo -n $minutes
echo -n :
echo -n $seconds

if [ "$time1" -eq "$plan_time" ]; then
flag=1
clear
echo -n "3秒後關閉 1.sh"
sleep 3
ps -ef|grep "sh 1.sh"|grep -v grep|awk '{print $2}'|xargs kill
clear
echo "1.sh 已經結束;2.sh 1分鍾後喚醒 1.sh"
sleep 59
fi

sleep 1
if [ $flag -eq 1 ]; then
sh 1.sh
exit 0
fi

done
===============
腳本一開始預定關閉 1.sh 的時間。
在未到定時時,就顯式時間。
定時時間到,給出殺死 1.sh 的提示,3秒後殺死,然後再 1 分鍾後再喚醒 1.sh 進程。喚醒 1.sh 後,2.sh 也就跟著退出了。
------------------------------------------------------
2.sh 時間設對了是可以殺死 1.sh 的。
如果按照你的要求,我覺得寫個程序應該更好處理些,參考代碼如下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

int main()
{
pid_t pid;
while(1) {
pid = fork();

switch(pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
while(1) {
printf("I'm 1.sh ,I'm running........\n");
sleep(1);
}

default:
sleep(5);
kill(pid, SIGKILL);
printf("child over\n");
sleep(40);
break;
}
}
return 0;
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
上面程序,先 fork() 出一個子進程,相當於 1.sh,然後你在子進程里做你要做的事情。父進程在 5s 後(相當於每天預設的一個時間,每天的時間設定可用相關的函數進行設置檢測)殺死子進程,然後睡眠 40s,醒來後,又循環 fork() 同樣的子進程做同樣的事情。

㈤ hell 如何在bash腳本中連接兩個字元串變數

bash在一個腳本里引用另一個腳本定義的變數有3種方法:

  • fork(/directory/script.sh)

    fork是最普通的,就是直接在腳本裡面用/directory/script.sh來調用script.sh這個腳本.

    運行的時候開一個sub-shell執行調用的腳本,sub-shell執行的時候,parent-shell還在。

    sub-shell執行完畢後返回parent-shell.sub-shell從parent-shell繼承環境變數.但是sub-shell中的環境變數不會帶回parent-shell

  • exec(exec/directory/script.sh)

    exec與fork不同,不需要新開一個sub-shell來執行被調用的腳本.被調用的腳本與父腳本在同一個shell內執行。但是使用exec調用一個新腳本以後,父腳本中exec行之後的內容就不會再執行了。這是exec和source的區別

  • source(source/directory/script.sh)

    與fork的區別是不新開一個sub-shell來執行被調用的腳本,而是在同一個shell中執行.所以被調用的腳本中聲明的變數和環境變數,都可以在主腳本中得到和使用.

  • 可以通過下面這兩個腳本來體會三種調用方式的不同:

    1.sh

    #!/bin/bash

    A=B

    echo"PIDfor1.shbeforeexec/source/fork:$$"

    exportA

    echo"1.sh:$Ais$A"

    case$1in

    exec)

    echo"usingexec…"

    exec./2.sh;;

    source)

    echo"usingsource…"

    ../2.sh;;

    *)

    echo"usingforkbydefault…"

    ./2.sh;;

    esac

    echo"PIDfor1.shafterexec/source/fork:$$"

    echo"1.sh:$Ais$A"

    2.sh

    #!/bin/bash

    echo"PIDfor2.sh:$$"

    echo"2.shget$A=$Afrom1.sh"

    A=C

    exportA

    echo"2.sh:$Ais$A"

    執行情況:

    $./1.sh

    PIDfor1.shbeforeexec/source/fork:5845364

    1.sh:$AisB

    usingforkbydefault…

    PIDfor2.sh:5242940

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    PIDfor1.shafterexec/source/fork:5845364

    1.sh:$AisB

    $./1.shexec

    PIDfor1.shbeforeexec/source/fork:5562668

    1.sh:$AisB

    usingexec…

    PIDfor2.sh:5562668

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    $./1.shsource

    PIDfor1.shbeforeexec/source/fork:5156894

    1.sh:$AisB

    usingsource…

    PIDfor2.sh:5156894

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    PIDfor1.shafterexec/source/fork:5156894

    1.sh:$AisC

    $

㈥ 如何在shell腳本里調用另一個shell腳本

子shell變數傳遞給父shell,中間可以保存個臨時文件讓父shell去讀。下邊是一個子shell,傳遞給父shell的一個例子,僅做參考#!/bin/bash(subvar="helloshell"echo"$subvar">temp.txt)readpvar

熱點內容
hp存儲擴容 發布:2024-11-17 23:29:16 瀏覽:569
在ftp中put表示什麼 發布:2024-11-17 23:29:12 瀏覽:383
mvc多文件上傳 發布:2024-11-17 23:13:56 瀏覽:155
玩游戲硬碟緩存32m 發布:2024-11-17 23:03:42 瀏覽:525
藍光存儲系統 發布:2024-11-17 23:03:41 瀏覽:436
地平線4提示配置低於最低怎麼辦 發布:2024-11-17 22:54:38 瀏覽:610
注冊銀行卡賬戶密碼填什麼 發布:2024-11-17 22:54:35 瀏覽:537
java壓縮上傳圖片 發布:2024-11-17 22:26:59 瀏覽:627
plc編程課件 發布:2024-11-17 22:18:23 瀏覽:469
我的世界伺服器信號一直在檢測 發布:2024-11-17 22:09:52 瀏覽:547