我正在使用 UP Board。它安装了 Ubilinux。我制作了一个浏览器信息亭,以便它自动登录到浏览器全屏模式,但我在重新启动时遇到问题。每当我尝试重新启动时,我都必须在登录屏幕上输入密码。我希望将其删除,以便无需用户输入即可自动登录。
尝试制作一个基本的加法函数,将输入的数字相加并输出总数。这是我当前的功能:
function addition() {
read -a arr
for i in ${arr[@]}
do
str=$str'+'$i
echo $i
done
echo $str
}
但这似乎要求一个输入然后输出上面的内容。我也试过使用:
function addition() {
for i in ${input[@]}
但这会输出一个空字符串。我如何着手创建一个接受此命令的函数:
$ addition 4 3 13 40
进入功能?
我想用这个脚本做的动作是
- 读取目录中每个文件的名称(不含基)
- 对于每个文件,询问用户是否要执行操作(例如将文件移动到目录中)
执行或不执行该操作。
我对 while 循环和读取输入有疑问。我试过这个:
#!/bin/csh -f set DIR = 'pwd' find $DIR -name * -exec basename {} \; | while read filename do read -p $filename" (y or n?)"choice if ($choice = "y") then <> endif end
但我得到了错误:
find: `basename' terminated by signal 13.
我还在考虑再次使用一段时间来扩展用户的输入,直到给出是或否,但这是一个二阶问题。
我试图提示用户提供两条信息:
1) 要更改的文件中的行号 2) 将其更改为的值。
到目前为止我的脚本:
echo "Do you wish to enter a variable to be changed?"
select yn in "Yes" "No"; do
case $yn in
Yes)
echo "Please enter a variable to be changed"
read lineNum
echo "Please enter variable's new value"
read val
awk -v lineNum="$lineNum" -v val="$val" \
'BEGIN { if (NR == lineNum) print val; else print $0}' \
test.in > newtest.in
;;
No)
break;;
esac
done
test.in 在一列中都有数值:
1
2
3
4
5
6
7
谢谢。
编辑 忘记提及错误:D。出于某种原因,创建了一个新文件,但仅使用指定的新 val,我想这可能与使用 $0 有关,但我无法弄清楚如何修复它。
在提示符中使用 cowsay 函数时,我想在提示符后换行:
read -p "$(cowsay "do you know this word?") \n" answer
这个问题有多种答案:
1) https://stackoverflow.com/questions/4296108/how-do-i-add-a-line-break-for-read-command/4296147
2) https://stackoverflow.com/questions/12741529/how-to-break-a-line-add-a-newline-in-read-p-in-bash
但是答案使用''
符号,它不能解析cowsay
命令