當前位置:首頁 » 編程軟體 » shell腳本中調用shell

shell腳本中調用shell

發布時間: 2022-03-12 12:49:05

『壹』 如何運行shell腳本

編寫好的shell腳本(如:test),可以採取兩種方式進行運行: 一、 $ sh test 一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。 也可以採用 $ ksh test 這種方式要求shell具有「可讀」的訪問許可權。 二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。 chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權) chmod +rx test(同上) chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權) 按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。 1、test(如果命令檢索路徑包含當前目錄) 2、./test(如果命令減縮路徑不包含當前目錄) *說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。

『貳』 如何在shell腳本里調用另一個shell腳本

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

『叄』 在執行a.sh這個shell腳本時會調用shell腳本b.sh,怎麼通過a.sh給b.sh中環境變數重新賦值

使用 . 可以把另一個腳本讀進來,,然後就可以引用其變數了

. /path/b.sh

b中的變數直接引用

『肆』 shell從外部讀入參數調用另一個shell腳本的問題

調用的時候給$args加雙引號就行了
sh other.sh "$args"

任何字元串變數,在使用的時候最好都加上雙引號。

『伍』 在shell腳本中調用函數,如果函數中使用了$1這樣的參數

是調用這個函數時,傳進去的參數~~~
[root@localhost test]# bash shell.sh
haha

[root@localhost test]# cat shell.sh
#!/bin/bash
function fun {
echo $1
}
fun haha

『陸』 如何在shell腳本中執行系統命令 小小知識站

方法一:切換到shell腳本所在的目錄(此時,稱為目錄)執行shell腳本:碼碼如下:cd /data/shell./hello.sh./的意思是說在當前的目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤。因為目前的目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。方法二:以絕對路徑的方式去執行bash shell腳本:碼碼如下:/data/shell/hello.sh方法三:直接使用bash 或sh 來執行bash shell腳本:碼碼如下:cd /data/shellbash hello.sh或碼碼如下:cd /data/shellsh hello.sh注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。方法四:在當前的shell環境中執行bash shell腳本:碼碼如下:cd /data/shell. hello.sh或碼碼如下:cd /data/shellsource hello.sh前三種方行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。

『柒』 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() 同樣的子進程做同樣的事情。

『捌』 shell腳本里的函數怎麼調用

在代碼復用及可維護性方面,函數有著巨大的優勢,因此,把常用功能封裝成函數是一件非常平常的事。shell腳本中,怎麼定義函數及使用函數:
函數定義:
# func_name 函數名
function func_name(){
#函數體內容
}

# func_name 函數名
func_name(){
#函數體內容
}
函數調用:
func_name parm
函數體中,可以通過$1 $2 ...$9接受函數調用中的變數
函數可以通過return 返回函數執行的結果

可以通過下面一個簡單例子,來看下在shell腳本中怎麼定義使用函數:
1、在/root/bin目錄下新建函數文件main.fun
vim /root/bin/main.fun
2、在main.fun文件中編寫函數findit內容
#!/bin/sh
function findit(){
if [ $# -lt 1 ] ; then #判斷函數參數個數
echo "Usage: findit filename"
return 1
fi
for loop #遍歷調用函數的參數
do
find $HOME -name $loop -print
done
return 0
}
3、Shell中載入函數文件/root/bin/main.fun
. /root/bin/main.fun
4、檢查載入文件
set
set命令將在shell中顯示所有的載入函數
5、調用函數
findit mysql php #在home 目錄查找文件mysql 和文件php

『玖』 如何在shell腳本中調用另一個shell的結果

假定獲取時間的腳本叫做getdate.sh

再其他的腳本裡面這么寫就可以了:
date=$(/path/to/getdata.sh)

『拾』 shell腳本里的函數怎麼調用

shell中的函數,要在定義這個函數的腳本中進行調用!

#!/bin/sh
echo_line(){
echodate
echo"Wellcometoshellfunc!"
}
echo_hello(){
echo"HelloWorld!"
}

##在這里調用,將全部代碼寫入test.sh就可以了
echo"callecho_hello"
echo_hello
echo"callecho_line"
echo_line

在命令行下執行:

$test.sh

熱點內容
uos系統如何更改root密碼 發布:2025-05-03 11:14:42 瀏覽:506
java文件伺服器搭建 發布:2025-05-03 11:09:11 瀏覽:690
錫山教育繳費初始密碼是什麼 發布:2025-05-03 11:06:51 瀏覽:739
linux的nohup命令 發布:2025-05-03 10:12:03 瀏覽:268
安卓手機同步通訊錄開關在哪裡 發布:2025-05-03 10:04:02 瀏覽:549
QT編譯純c代碼 發布:2025-05-03 10:04:00 瀏覽:173
我的世界伺服器領地熊家 發布:2025-05-03 10:03:53 瀏覽:98
浪潮伺服器怎麼拆硬碟 發布:2025-05-03 09:48:16 瀏覽:104
醉酒爸爸安卓版本在哪裡下載 發布:2025-05-03 09:47:22 瀏覽:54
python線程內存 發布:2025-05-03 09:38:47 瀏覽:467