『壹』 新手學習shell腳本,遇到的問題
cd ${0%/*} 表示刪除從變數$0尾部開始第一個正斜岡之後匹配到的內容,返回剩下的內容。
比如$0是這個目錄/home/john/source 那麼就是把"/source"截取掉剩下的。
『貳』 緊急求助SHELL腳本執行問題
sh -x 看一下
你的while循環中的<<FTPIT 需要在後邊做個收尾,這個模式是
<<EOF
(內容)
EOF
所以你需要在結尾加上FTPIT,要不這個內容就沒結束。
跟分號不分號沒任何關系
ftp -i -n $ipadd <<FTPIT
user $ftpuser $ftppwd
echo "connect $ipadd success!"
cd /home/dcms/test
binary
get $line
echo "get file $line "
close
bye
FTPIT
『叄』 shell腳本問題!
1).touch
/opt/storeb/fileb
##表示在/opt/storeb/目錄下新建文件fileb,。
2).2>&1
##重定向命令,2表示錯誤輸出,如果有錯誤,則輸出至&1,這地方不
太清除實際輸出到哪兒了,估計和2>dev/null的作用一樣,將錯誤丟掉
3).
|
grep
'Read-only
file
system'
##管道命令,查找剛才錯誤中是否有報
'Read-only
file
system'的錯誤。
4).
$?是shell變數,表示"最後一次執行命令"的退出狀態.0為成功,非0為失敗.if語句塊,就是說明如果上述函數成功之後,執行then語句塊。先卸載
storeb,在掛載所有自動掛載設備。
『肆』 shell腳本錯誤問題
錯誤提示中已經說了:
首先yesterday函數中 line 1 有問題
oset=`echo $TZ|tr -d '[A-Z+]`
少了一個匹配的單引號啊
這個錯誤同時也導致line2的錯誤
另外,樓上說了,腳本第五行(yesterday函數中的第三行)也缺少匹配的雙引號。
建議使用 sh -n scripts.sh 來檢查腳本是否有語法問題,
然後使用 sh -x scripts.sh 來顯示所有語句的執行過程,
這樣可以比較清楚地看出哪裡出問題了。
『伍』 shell腳本問題
正確答案,這個是清睿的面試題:
awk '$4>"[13/Apr/2017:15:00:00"&&$4<"[13/Apr/2017:17:00:00"' access.log|awk '{print $1}'|sort|uniq -c|sort -n -k 1 -r|head -n 5
『陸』 shell腳本問題,文本排版問題
1、shell腳本如下:
#!/bin/bash
:>5.txt
for i in {1..3}
do
for j in {1..4}
do
echo -n `sed -n "${i}p" ${j}.txt` >>5.txt
echo -ne " " >>5.txt
done
echo "" >>5.txt
done
2、執行結果如下:
『柒』 linux shell腳本的問題
1、第二個括弧不能換成其他的,中括弧,大括弧,雙中括弧,雙括弧都不可以,意思都不一樣。
2、:-是一起的;fileuser
如果有值的話,就用所擁有的值賦予給filename變數;無值的話,就把filenname賦予給fileuser,再賦予給filename變數
3、大括弧可以不要,大括弧里不做如何的參數變化可以捨去。
你最好修改下:
#!/bin/bash
read
-p
"please
you
nmae
"
fileuser
date=$(date
--date='2
day
ago'
+%Y%m%d)
filename=${fileuser:-"filename"}
file=$filename$date
touch
$file
這樣或許能更好體現出意義來
『捌』 一道shell腳本問題,在線等,謝謝
#!/bin/bash
j=0
foriin`sed-n/zhangsan[[:blank:]]/pa.txt|gawk'{print$2}'`
do
j=$[$i+$j]
done
echo$j
『玖』 Linux shell腳本問題,請高手解答
expr運算中,運算符兩側都要有空格的,除此格式錯誤外其他沒有錯誤!
另外,` `內的命令及shell外部命令(如expr)都會新建子shell去執行,開銷大。強烈建議用shell內建命令let做基本運算。
number=`expr $number + 1`
sum=`expr $sum + $number`
可以改為:
let number+=1
let sum+=number
let支持C語法運算,變數前可以不加$取值符號;支持使用+=運算符,a+=b等同於a=a+b,可以讓代碼更簡潔高效。
用let時運算表達式如果有空格,要放入雙引號中,如:
let sum="sum + number"
『拾』 Linux的Shell腳本編程問題求教,具體題目如下。
先佔下樓層,空了慢慢給你做!
先做第一題1月12日:
#!/bin/bash
echo this "date" :`date`;
echo this "cal" :`cal`;
echo this "pwd" :`pwd`;
echo this "ls" : `ls`.
第二題1月12日:
這個沒法寫了撒 太籠統;建議翻翻書。
我列個環境變數的例子吧:
#!/bin/bash
echo "第二題":
TEST_DIR=/root
export $TEST_DIR;
echo "環境變數TEST_DIR是/root".
第三題1月12日:
#!/bin/bash
echo "第三題for":
echo "3.1 for"
x=0
for ((i=1 ; i<101 ;i++));
do
x=$(($x+$i))
done
echo $x
echo "---------------------------------"
echo "第三題while":
echo "3.2 while"
x=0
i=1
while [ $i -lt 101 ]
do
i=$(($i+1))
x=$(($x+$i))
done
echo $x
第三題第二個
#!/bin/bash
echo "3.2"
function fib {
if [ $1 -lt 2 ]; then
echo -n $1
else
local n_2=$(($1 - 2))
local n_1=$(($1 - 1))
local f_n_2=$(fib $n_2)
local f_n_1=$(fib $n_1)
local f_n=$((f_n_2 + f_n_1))
echo -n $f_n
fi
}
n=10
for ((i = 0; i < $n; i++))
do
printf "fib(%2d) = %d\n" $i $(fib $i)
done