Ⅰ 如何在shell腳本中調用另一個shell的結果
可以將通用腳本獲取的結果直接輸出,比如你的通用腳本在/path/to/getDate.sh
內容比如如下:
echo "2013-02-26"
然後在另外一個腳本里可以這樣獲得它的輸出
Date=`sh /path/to/getDate.sh` # 注意這里不是引號,而是反引號就是Esc下面1左邊的鍵
現在Date變數的值就是"2013-02-26"
Ⅱ shell腳本怎麼隨機調用其他腳本
1. 計算出當前目錄下以.sh結尾的腳本數目(假設頭腳本不在這個文件夾里):num=`ls *.sh|wc -l`
2. 獲取當前秒數:sec=`date +%s`
3. 基於腳本數目計算隨機數(范圍1~$num):randNum=`expr $sec % $num + 1`
4. 根據隨機數調用腳本:sh /path/`ls|sed -n ${randNum}p`
Ⅲ 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
Ⅳ 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並沒有用到。
Ⅳ sh腳本如何自動執行java程序,並且該腳本如何被定期調用
各位好我有一個問題,是這樣: 環境:有一套管理系統(包括聯機和批量),該管理系統白天運行聯機系統,晚上運行批量系統。 目的:聯機系統運行到晚上,會停掉,這時候通過在unix下的sh腳本調用並且啟動批量系統。 sh腳本可以調用java程序,通過java程序就可以啟動了批量系統。 andilyliao 寫道最簡單的方法 你可以用java寫一個job 然後每天晚上執行sh mginobili 寫道可以在腳本中 實現一個定時功能啊 比如每隔半小時 檢查一次當前的時間 如果到了晚上 就停止聯機系統,運行批量系統 當然前提是 這個sh腳本要一直保持運行狀態 並且其錯誤處理機制要完善問題補充:哦。你的意思是不是這樣啊, 這個sh腳本作為一個定時器,定時調用啟動聯機系統或者批量系統的程序。 通過while(1)這樣一個循環,一直運行不中斷,然後sleep一定時間,就調用聯機的啟動程序,再過一定時間,關閉聯機啟動批量系統。
Ⅵ shell腳本怎麼調用其他shell腳本
在Shell中要如何調用別的shell腳本,或別的腳本中的變數,函數呢?
方法一: . ./subscript.sh
方法二: source ./subscript.sh
注意:
1.兩個點之間,有空格,千萬注意.
2.兩個腳本不在同一目錄,要用絕對路徑
3.為簡單起見,通常用第一種方法
例如:
復制代碼代碼如下:
main.sh #主腳本
subscripts.sh #子腳本,或者說被調腳本
[code]
[code]
###subscripts.sh 腳本內容如下:###
#!/bin/bash
string="Hello,World! \n"
復制代碼代碼如下:
###main.sh 腳本內容如下###
#!/bin/bash
. ./subscripts.sh
echo -e ${string}
exit 0
輸出結果:
復制代碼代碼如下:
# chmod +x ./main.sh
# ./main.sh
Hello,World!
#
Ⅶ shell腳本怎麼調用另外腳本中的參數
另外的腳本中輸出用echo,腳本調用a=`bash scriptA.sh`
Ⅷ 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腳本
子shell變數傳遞給父shell,中間可以保存個臨時文件讓父shell去讀。下邊是一個子shell,傳遞給父shell的一個例子,僅做參考#!/bin/bash(subvar="helloshell"echo"$subvar">temp.txt)readpvar