Tag: bash

如何为curl命令urlencode数据?

我正在尝试编写一个bash脚本进行testing,它需要一个参数并通过curl将其发送到网站。 我需要URL的编码值,以确保特殊字符处理正确。 什么是最好的方法来做到这一点? 到目前为止,这是我的基本脚本: #!/bin/bash host=${1:?'bad host'} value=$2 shift shift curl -v -d "param=${value}" http://${host}/somepath $@

在bash中,如何检查一个string是否以某个值开始?

我想检查一个string是否以“node”开头,例如“node001”。 就像是 if [ $HOST == user* ] then echo yes fi 我怎样才能正确地做到这一点? 我还需要结合expression式来检查HOST是“user1”还是以“node”开始 if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ]; then echo yes fi > > > -bash: [: too many arguments 如何正确地做到这一点?

将stdout的COPYredirect到bash脚本本身的日志文件

我知道如何将stdoutredirect到一个文件: exec > foo.log echo test 这将把“testing”放到foo.log文件中。 现在我想将输出redirect到日志文件并保持在标准输出 也就是说,可以从脚本之外轻松完成: script | tee foo.log 但我想从内部做到这一点 我试过了 exec | tee foo.log 但它没有工作

指定在使用或不使用Ruby的情况下执行shell命令时使用的私有SSH密钥?

也许是一个相当不寻常的情况,但我想指定一个私人的SSH密钥来执行从本地计算机的shell(git)命令。 基本上是这样的: git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser" 甚至更好(在Ruby中): with_key("/home/christoffer/ssh_keys/theuser") do sh("git clone git@github.com:TheUser/TheProject.git") end 我已经看到使用Net :: SSH连接到远程服务器的示例,它使用指定的私钥,但是这是本地命令。 可能吗?

比较Bash中的两个string时出现“找不到命令”错误

我的整个脚本目前是这样的: #!/bin/sh clear; blanko=""; # Dummy-Variablen variable=Testvariable; if [[$variable == $blanko]]; then echo "Nichts da!" else echo $variable fi 如果我进入 TestSelect.sh 我明白了 /usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found Testvariable 我该如何解决这个问题?

如何在Java中使用sudo权限执行bash命令?

我正在使用ProcessBuilder来执行bash命令: import java.io.IOException; public class Main { public static void main(String[] args) { try { Process pb = new ProcessBuilder("gedit").start(); } catch (IOException e) { e.printStackTrace(); } } } 但是我想要这样做: Process pb = new ProcessBuilder("sudo", "gedit").start(); 如何通过超级用户密码bash? ("gksudo", "gedit")不会诀窍,因为它从Ubuntu 13.04以来就被删除了,我需要使用默认命令来执行此操作。 编辑 gksudo回到最新的更新Ubuntu 13.04。

正确的Bash和shell脚本可变大小写

我运行了很多带有variables的shell脚本,而且我一直认为这是一个严重的误解。 我的理解是,按照惯例(也许很久以前也是如此), 环境variables是全面的。 但是在像Bash这样的现代脚本环境中,我总是倾向于使用临时variables的小写名称的惯例,而对于导出的variables(即环境variables)我们总是使用大写的名称。 例如: #!/usr/bin/env bash year=`date +%Y` echo "It is $year." export JAVA_HOME="$HOME/java" 这一直是我的事情。 是否有权威的消息来源同意或不同意这种方式,还是纯粹是一种风格?

如何在Bash给定的超时后杀死一个subprocess?

我有一个bash脚本,启动一个subprocess,崩溃(实际上,挂起),不时有没有明显的原因(封闭的来源,所以我没有太多的事情可以做)。 因此,我希望能够在一定的时间内启动这个过程,如果在一定的时间之后没有成功返回,就要杀死它。 有一个简单而强大的方法来实现使用bash? PS:告诉我,如果这个问题更适合serverfault或超级用户。

如何使用Bash脚本的密码运行sftp命令?

我需要从Linux主机使用sftp将日志文件传输到远程主机。 我已经从我的操作组提供了相同的凭据。 但是,由于我不能控制其他主机,所以无法与其他主机生成和共享RSA密钥。 那么是否有办法通过cron作业从Bash脚本内部运行sftp命令(提供用户名/密码)? 我发现了一个类似的Stack Overflow问题, 在Bash脚本中指定了sftp的密码 ,但是没有令人满意的答案来解决我的问题。

如何用Bash迭代目录中的文件?

我需要编写一个脚本,用不同的参数来启动我的程序,但我是Bash的新手。 我开始我的程序是这样的: ./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt] 。 这是我想要做的伪代码: for each filename in /Data do for int i = 0, i = 3, i++ ./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt end if end for 所以我真的很困惑如何从第一个参数创build第二个参数,所以它看起来像dataABCD_Log1.txt并启动我的程序。 非常感谢帮助。 PS我知道那里有类似的问题,但我没有发现什么创build我的日志文件名称。