小编hax*_*ode的帖子

使用sed分割带分隔符的字符串

我有一个以下格式的字符串:

string1:string2:string3:string4:string5

我正在尝试使用sed分割字符串:并在新行上打印每个子字符串.这是我正在做的事情:

cat ~/Desktop/myfile.txt | sed s/:/\\n/

这打印:

string1
string2:string3:string4:string5
Run Code Online (Sandbox Code Playgroud)

如何在每个分隔符上拆分它?

linux bash sed string-split

46
推荐指数
3
解决办法
16万
查看次数

如何在PowerShell中比较两个字符串对象的内容

在PowerShell中我有一个字符串对象数组,我有一个包含字符串对象的对象.在Java中,您可以执行a .equals(aObject)来测试字符串值是否匹配,而==如果两个对象引用内存中的相同位置则执行测试.

如何.equals(aObject)在powershell中运行等效项?

我这样做:

$arrayOfStrings[0].Title -matches $myObject.item(0).Title
Run Code Online (Sandbox Code Playgroud)

这两个都具有完全相同的字符串值,但我得到返回值false.有什么建议?

powershell string-comparison

38
推荐指数
2
解决办法
14万
查看次数

如何通过ssh检查dir是否存在并将结果返回给主机

我正在尝试建立SSH连接并查看是否存在目录,如果该目录存在,我想在进行SSH调用的本地计算机上运行命令.

这是我尝试过的:

if [ ssh -t username@ssh_server -d /directory ]
then
{
    commands....
}
fi
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

ssh bash shell

23
推荐指数
1
解决办法
4万
查看次数

如何从命令行使用带有Tortoise SVN的svn + ssh

我在使用TortoiseSvn的Windows 7工作站上尝试使用以下语法检出repo时遇到问题:

svn co svn+ssh://user@ip/repo .
Run Code Online (Sandbox Code Playgroud)

我为测试这个问题做了些什么:

  • 修改了TortoiseSvn的网络设置,指向..\TortoisePlink.exe
  • 成功建立了与目标计算机的ssh连接,没有任何问题
  • 成功检查了使用OpenSsh运行Ubuntu的工作站的repos

当我尝试从Windows 7工作站上的命令行执行上述语法时,我收到错误:

svn: E720087: Unable to connect to a repository at URL 'svn+ssh:///user@ip/repo'
svn: E720087: Can't create tunnel:The parameter is incorrect.
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我使用乌龟gui浏览回购,我可以成功打开并检查回购.但我需要从命令行执行此操作以进行脚本编写.

有什么建议?

svn windows shell tortoisesvn command-line

17
推荐指数
1
解决办法
3万
查看次数

"var = $ {var:-word}"和"var = $ {var:= word}"之间有什么区别?

我在这上面阅读了bash手册页,但我不明白其中的区别.我测试了它们两个,它们似乎产生完全相同的结果.

如果未通过命令行参数设置值,我想设置变量的默认值.

#!/bin/bash

var="$1"
var=${var:-word}
echo "$var"
Run Code Online (Sandbox Code Playgroud)

上面的代码回显,word如果$1为null,$1则回显if not null的值.这样做:

#!/bin/bash

var="$1"
var=${var:=word}
echo "$var"
Run Code Online (Sandbox Code Playgroud)

根据Bash手册页,

${parameter:-word}使用默认值.如果参数未设置或为null,则替换单词的扩展.否则,参数的值将被替换.

${parameter:=word}分配默认值.如果参数未设置或为null,则将字的扩展分配给参数.然后替换参数的值.不能以这种方式分配位置参数和特殊参数.

他们是一样的,${parameter:=word}只是做得更多吗?

linux bash

14
推荐指数
4
解决办法
1323
查看次数

测试以查看PowerShell中是否存在计划任务

我无法弄清楚为什么下面的代码不起作用:

Function createFirefoxTask() {
   $schedule = new-object -com Schedule.Service 
   $schedule.connect() 
   $tasks = $schedule.getfolder("\").gettasks(0)

   foreach ($task in ($tasks | select Name)) {
      echo "TASK: $task.name"
      if($task.equals("FirefoxMaint")) {
         write-output "$task already exists"
         break
      }
   }
} 
createFirefoxTask
Run Code Online (Sandbox Code Playgroud)

我得到的输出是这样的:

FirefoxMaint                                                                          

TASK: @{Name=FirefoxMaint}.name
TASK: @{Name=Task1}.name
TASK: @{Name=Task2}.name
TASK: @{Name=Task3}.name
TASK: @{Name=Task4}.name
TASK: @{Name=Task5}.name
Run Code Online (Sandbox Code Playgroud)

如果我$task.name在不通过脚本的情况下从shell 回显,它会正确显示名称.

powershell foreach scheduled-tasks

12
推荐指数
3
解决办法
2万
查看次数

尝试mkdir时出现Shell变量问题

任何想法这个代码有什么问题?

CLIENT_BUILD_DIR="~/Desktop/TempDir/"

if [ ! -d $CLIENT_BUILD_DIR ]
then
   {
      mkdir $CLIENT_BUILD_DIR
   }
fi
Run Code Online (Sandbox Code Playgroud)

我收到错误:mkdir:〜/ Desktop:没有这样的文件或目录.

显然目录就在那里,如果我用〜/ Desktop/TempDir /替换变量,脚本就可以工作了

linux variables bash shell

11
推荐指数
3
解决办法
2万
查看次数

cmd>/dev/null 2>&1如何工作?

我正在阅读重定向数据/dev/null,所以我尝试了一个简单的测试:

ping a.b.c  # which results in an address not found
Run Code Online (Sandbox Code Playgroud)

如果我试试这个:

ping a.b.c > /dev/null # prints the same error message as the one above
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做:

ping a.b.c > /dev/null 2>&1 # The error message is gone
Run Code Online (Sandbox Code Playgroud)

最后的解决方案是理想的解决方案,但是发生了2>&1什么?到目前为止,我的研究表明,2代表stderr1代表stdout.因此,如果我以这种方式阅读,看起来我正在创建一个stderr文件并重定向stdout到它?

如果是这种情况,&该命令的作用是什么?

unix linux bash shell

11
推荐指数
1
解决办法
2万
查看次数

使用bash here-doc"意外的文件结束"时出错

我收到以下错误,该错误在我的代码的最后一行标记(为空):

syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会这样说.我只是想尝试使用here-docssh连接:

#!/bin/sh

connectToServer() {
   ssh -t root@$1 <<- ENDSSH
      echo "Connected to server!"
   ENDSSH
}

connectToServer $1
Run Code Online (Sandbox Code Playgroud)

这段代码出了什么问题?

编辑

感谢那些帮助我解决这个问题的人.我的剧本有一些问题; 我在线上使用空格:

echo "Connected to server" 
Run Code Online (Sandbox Code Playgroud)

而不是制表符.在关闭之前我还包括空间,ENDSSH这导致了EOF.这些变化是我的问题的一部分,但解决它的最后一件事是删除我关闭后出现的额外空格字符ENDSSH.

ssh bash

11
推荐指数
2
解决办法
4061
查看次数

有没有办法让powershell等待安装完成?

我有一个Windows软件包列表,我使用以下命令通过powershell安装:

& mypatch.exe /passive /norestart

mypatch.exe正在从列表中传递,它不会等待先前的安装完成 - 它只是继续.它构建了一个巨大的安装窗口,正在等待安装.此外,我无法$LASTEXITCODE确定安装是成功还是失败.

反正有没有让安装在开始下一个之前等待?

windows powershell wait

6
推荐指数
2
解决办法
1万
查看次数