设计一个shell脚本,求最小值
min=10000
for i in 12 5 18 58 -3 80 ;do
if (( i<min )) ;then
(( min=i ))
fi
done
echo " The smallest number is: $min"
设计一个shell脚本,求命令行上所有参数的整数和。
sum=0
while (( $# != 0 )) ; do
(( sum = sum+$1 ))
shift
done
echo "the sum of arguments is $sum"
读取正整数m,计算各位和,例如123,各位和1+2+3=6
read m
while (( m!=0 ));do
(( sum=sum+m%10 ))
(( m=m/10 ))
done
echo $sum
批量添加20个用户,名字格式为user01—user20, 口令为xxxuser$num
for i in {1..20};do
num=`printf "%02d" $i ` uname="user$num"
useradd $uname
echo xxx$uname | passwd --stdin $uname
done
从100开始找到50个含有7的素数输出,每五个一行。
function isprime(){
n=$1
if((n==2));then
return 0;
fi
local i;
for ((i=2;i<=n/2;i++)); do
if (( n%i == 0 )); then
return 1;
fi
done
return 0;
}
i=100
count=0
while ((count<=50)); do
isprime $i
r=$?
if (( r==0 )) && [[ "$i" =~ 7 ]] ;then
printf "%4d" $i
((count++))
if (( count%5 ==0 ));then
echo ""
fi
fi
((i++))
done
编写shell程序,输出下列图形,行数由键盘输入:

read -p "请输入行数: " n
for ((i=1; i<=n; i++))
do
for ((j=1; j<=i; j++))
do
printf "%-6s" "$j"
done
echo
done
编写shell程序,完成下列功能① 建立组两个组ai和bigdata。② 要创建立999个用户,用户名stxxx,形式为st001~st999,指定其家目录为dxxx。xxx为奇数的用户指定附加组ai,;xxx为偶数的用户指定其附加组bigdata。
groupadd ai 2>/dev/null
groupadd bigdata 2>/dev/null
for i in $(seq -w 1 999)
do
username="st$i"
dirname="/d$i"
if (( $i % 2 == 1 )); then
group="ai"
else
group="bigdata"
fi
mkdir -p "$dirname"
useradd -d "$dirname" -G "$group" "$username"
echo "$username:123456" | chpasswd
done
echo "999个用户已创建完成。"
编写shell程序,打印出从100开始52个各位和等于24的数,每五个输出一行
count=0
num=100
line=0
while (( count < 52 ))
do
sum=0
temp=$num
while (( temp > 0 ))
do
(( sum += temp % 10 ))
(( temp /= 10 ))
done
if (( sum == 24 )); then
printf "%5d" "$num"
(( count++ ))
(( line++ ))
if (( line == 5 )); then
echo
line=0
fi
fi
(( num++ ))
done
编写shell程序,将/root的文件依次处理,如果是目录则跳过。如果是文件,文件名中含有3,则将其复制到/tmp下;文件名中含有7,则将其移动到/tmp下;其他文件则输出文件名就可
for file in /root/*
do
if [ -d "$file" ]; then
continue
fi
filename=$(basename "$file")
if [ -f "$file" ]; then
if [[ "$filename" == *3* ]]; then
cp "$file" /tmp/
elif [[ "$filename" == *7* ]]; then
mv "$file" /tmp/
else
echo "$filename"
fi
fi
done
打印出从100开始15个含有3或7的素数,每五个输出一行
is_prime() {
local n=$1
if (( n < 2 )); then
return 1
fi
for (( i=2; i*i<=n; i++ )); do
if (( n % i == 0 )); then
return 1
fi
done
return 0
}
count=0
line=0
num=100
while (( count < 15 )); do
if is_prime "$num"; then
if [[ "$num" == *3* || "$num" == *7* ]]; then
printf "%5d" "$num"
((count++))
((line++))
if (( line == 5 )); then
echo
line=0
fi
fi
fi
((num++))
done