Articles of shell

使用相同的密钥循环访问关联数组

我目前正试图循环通过一个关联数组。 该数组包含具有相同键的值。 但是,当我尝试循环时,我只得到一组结果。 我怎样才能遍历包含相同的密钥的所有值? #!/bin/bash/ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" ) for k in "${!details[@]}" do echo $k — ${details[$k]} done 结果: 猫— sphynx 狗—牛头犬 鸟—鹦鹉

在shell脚本中使用for循环遍历参数列表?

我想通过参数显示提供给我的shell脚本的文件的内容。 我需要使用普通的'for(())'循环来做这个,而不是'for arr'循环。 这是我的代码。 我应该如何正确的文件名称为该猫命令? for (( i=1;$i<=$#;i=$i+2 )) do cat '$'$i #display the contents of the file currently being traversed done

尝试遵循一个shell脚本教程,接收“$:command not found”

我在这里遵循这个指南: http : //www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html 每次运行: $ [ -f /etc/passwd ] && echo "File exists" || echo "File does not exists" $ [ -f /etc/passwd ] && echo "File exists" || echo "File does not exists" 我得到: $: command not found File does not exists 有什么build议?

ShellScript – 帮助我列出文件和子目录

我想知道如何以这种格式列出一个目录。 正常列表结构: #find . -follow -type f | sed "s/.//" /files/test1/test2/file1.txt /files/test1/test2/file2.txt /files/test1/test2/file3.txt /files/test1/file1.txt /files/test1/file2.txt /files/test1/file3.txt /files/file1.txt /files/file2.txt /files/file3.txt /file1.txt /file2.txt /file3.txt 我想我会列出如下: /files/test1/test2/file1.txt file2.txt file3.txt /files/test1/file1.txt file2.txt file3.txt /files/file1.txt file2.txt file3.txt /file1.txt file2.txt file3.txt 喜欢这个: ls -R1 | sed -e 's/://' -e 's/.//' 但是会喜欢上面解释的结构!

如何使用pipeparsing命令的输出

我想处理一个进程的输出,比如ifconfig。 因为你都知道ifconfig的输出是包含inet addr: mask的行的列表:但是我想单独提取ip [来自inet addr:field]并列出它。 有没有可能与pipe道命令? 喜欢 ifconfig | What should be here? 我想把这个命令的输出作为inet addresses列表(如果存在的话,不同的访问点)。

执行远程命令并将input保存到文件中

我需要通过SSH访问多个主机,执行特定命令( show ms info )并将输出捕获到文件中。 我需要将该文件复制回我的Linux机器 我想使用ssh并expect提供密码 我的问题是保存输出到一个文本文件,并同时循环100台机器。

我可以从Java程序更改在Linux的用户密码?

我正在尝试通过在outputstream中发送密码来更改linux中的用户密码,但是它没有完成。 我的Java程序就像 Process process = Runtime.getRuntime().exec("sudo passwd sampleuser"); OutputStream outputStream = process.getOutputStream(); InputStream inputStream = process.getInputStream(); PrintWriter printWriter=new PrintWriter(outputStream); printWriter.write("123456"); printWriter.write("\n"); printWriter.flush(); 我的程序在这里失败,它要求密码,但我不希望这种情况。 有没有可能从Java程序提供密码? 你可以build议我,我将如何成功地做到这一点,或者是否有任何shell API可用。 当我尝试使用shell脚本并从我的java程序中调用它时,同样的事情就成功了 Process process = Runtime.getRuntime().exec("bash first.sh"); 我的shell脚本是 i="123456" echo -e $i"\n"$i|sudo -S passwd sampleuser 它成功地更改了用户密码。

了解linux上次重启命令的结果

当我在Linux上运行最后的重新启动命令时,我收到以下结果 重启系统启动2.6.32-38-server Thu Jun 7 10:54 – 15:22(04:27) 我需要知道什么时候04:27是什么意思? 重新启动了4小时27分钟还是什么? 我试图寻找最后的命令结果的描述,但没有运气。 谢谢

Shell程序 – 确定文件中的平均字长

我正在尝试编写一个shell程序来确定文件中的平均字长。 我假设我需要以某种方式使用wc和expr 。 指导正确的方向将是伟大的!

是否有可能在sed地址做简单的算术?

是否有可能在sed地址做简单的算术? 根据“地址”手册部分来看,答案似乎不是。 但也许有一个解决方法? 例如,如何打印文件的第二行? 这将是很酷的东西,如: sed -n '$-1 p' file 但它显然不工作…所以我通常必须做多个sed调用,首先用于标识行,然后使用shell $((expr))进行算术运算,然后再次调用sed。 喜欢这个: sed -n "$(($(sed -n '$ =' file)-1)) p" file 是否有一个“更好”,更紧凑,更可读的方式与sed地址算术? 在一个严重的拖延时刻,我决定写一个小脚本,迅速改变xterm色彩scheme 。 这个想法是,你有.Xresources文件的开始标记和结束标记: … START_MARKER … END_MARKER … 而您想要删除标记之间的所有内容,而不是标记本身。 再次,做这样的事情会很棒: sed '/START_MARKER/+1,/END_MARKER/-1 d' file …但你不能!