2017-03-09 51 views
0

我試圖在線搜索答案,但發現很難用詞組搜索標準來查找我要找的內容。對於初學者來說,我是一個編程/腳本編程的總手。運行Bash腳本,然後是關鍵字或變量

我得到的是理解如何使用腳本中的讀取功能來創建來自用戶輸入的變量,這非常棒。我的問題是你可以運行一個腳本,後面跟一個關鍵字,這個關鍵字可以表示一個主機名(目標)設備。這看起來像這樣。

sample.sh主機名

目前我的理解只允許我加入的主機名到一個變量的腳本運行後,但是這似乎有點慢。我想要的是一個通用腳本,用於檢查網絡交換機上的接口狀態。將腳本設置成我可以運行的方式,然後使用主機名來快速檢查單個設備是非常棒的。我想我錯過了一些基本的理解。

我希望我清楚地描述過,感謝您提前提供任何幫助。下面我有一個樣本bash腳本和希望腳本,它傳遞到


#!/bin/bash 

echo "What device do you want to check TRUNK links?" 

read -e host 

echo "Username:" 

read -e user 

echo "Password:" 

read -s -e password 

./show-trunk.exp $host $user $password; 

#!/usr/bin/expect -f 

set host [lindex $argv 0] 
set user [lindex $argv 1] 
set password [lindex $argv 2] 

#spawn echo "Running Script..." 

log_user 0 

spawn ssh [email protected]$devices 

expect "*assword:" 

send "$password\r" 

expect "#" 

log_user 1 

send "show int desc | in TRUNK\r" 

expect "#" 

send "exit\r" 

回答

1

有在bash這意味着投入到他們的論點特殊變量。你可以像這樣指定它們:

~> ./test.sh hello bash user 
hello bash user 

如果你需要測試的正確數量的參數,你可以做一個簡單的if語句:

#!/usr/bin/env bash 
echo $1 $2 $3 

然後在命令行中運行腳本像這樣:

#!/usr/bin/env bash 
if [[ "$#" -eq 3 ]]; do 
    echo $1 $2 $3 
else 
    echo "Not enough arguments" 
fi 

然後,如果你把它叫做命令行:

~> ./test.sh hello bash user 
hello bash user 
~> ./test.sh oops 
Not enough arguments 
+0

非常感謝,這正是我一直在尋找的! :) –