标签: scripting

如何确定bash变量是否为空?

确定 bash 中的变量是否为空(“”)的最佳方法是什么?

我听说建议我这样做 if [ "x$variable" = "x" ]

这是正确的方法吗?(一定有更直接的东西)

scripting bash

870
推荐指数
10
解决办法
120万
查看次数

bash中的双方括号和单方括号有什么区别?

我只是想知道两者之间到底有什么区别

[[ $STRING != foo ]]
Run Code Online (Sandbox Code Playgroud)

[ $STRING != foo ]
Run Code Online (Sandbox Code Playgroud)

除此之外,后者是符合 POSIX 的,可在 sh 中找到,而前者是在 bash 中找到的扩展。

scripting shell bash posix

509
推荐指数
5
解决办法
24万
查看次数

在没有窗口的计划任务中运行 .bat 文件

我有一个计划任务,它启动一个robocopy每小时运行一次的批处理脚本。每次它运行时,桌面上都会弹出一个带有 robocopy 输出的窗口,我真的不想看到。

我设法通过运行预定的作业来使窗口最小化

cmd /c start /min mybat.bat
Run Code Online (Sandbox Code Playgroud)

但这每小时给我一个新的命令窗口。鉴于cmd /c“执行字符串指定的命令然后终止” ,我对此感到惊讶- 我一定误解了文档。

有没有办法在不弹出 cmd 窗口的情况下运行批处理脚本?

scripting windows command-line-interface scheduled-task windows-command-prompt

158
推荐指数
7
解决办法
32万
查看次数

什么是“-bash: !”:事件未找到”

尝试在 bash shell 下执行以下命令 echo "Reboot your instance!"

在我的安装中:

root@domU-12-31-39-04-11-83:/usr/local/bin# bash --version
GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@domU-12-31-39-04-11-83:/usr/local/bin# uname -a
Linux domU-12-31-39-04-11-83 2.6.35-22-virtual #35-Ubuntu SMP Sat Oct 16 23:57:40 UTC 2010 i686 GNU/Linux
root@domU-12-31-39-04-11-83:/usr/local/bin# echo "Reboot your instance!"
-bash: !": event not …
Run Code Online (Sandbox Code Playgroud)

scripting linux shell bash

151
推荐指数
6
解决办法
22万
查看次数

如何让 bash 脚本在执行之前打印出每个命令?

例如,我有一个简单的 bash 文件

#!/bin/bash
cd ~/hello
ls
Run Code Online (Sandbox Code Playgroud)

如何让它在执行之前显示每个命令?Windows 批处理脚本中“@echo off”的效果正好相反。

scripting bash debugging

95
推荐指数
5
解决办法
12万
查看次数

为什么在 shell 脚本上使用 Chef/Puppet?

Puppet 和 Chef 工具的新功能。似乎他们正在做的工作可以用 shell 脚本来完成。也许它是在 shell 脚本中完成的,直到这些出现。

我同意它们更具可读性。但是,除了可读性之外,是否还有其他优于 shell 脚本的优点?

scripting provisioning configuration-management puppet chef

83
推荐指数
6
解决办法
3万
查看次数

如何在 ssh 上使用 sudo 运行任意复杂的命令?

我有一个只能以我的用户名 (myuser) 登录的系统,但我需要以其他用户 (scriptuser) 身份运行命令。到目前为止,我想出了以下来运行我需要的命令:

ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\""
Run Code Online (Sandbox Code Playgroud)

但是,如果当我尝试运行更复杂的命令时,例如[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"我很快就会遇到引用问题。我不确定如何将这个示例复杂命令传递给bash -c,当\"已经分隔了我传递的命令的边界时(所以我不知道如何引用 /tmp/Some 目录,其中包含一个空格。

无论引用多么复杂/疯狂,是否有通用解决方案允许我传递任何命令,或者这是我达到的某种限制?是否有其他可能的,也许更具可读性的解决方案?

scripting ssh bash sudo

83
推荐指数
6
解决办法
7万
查看次数

将 -xe 参数传递给 /bin/bash 有什么作用

正是标题所说的。我没有太多运气找到合适的文档来查看 -xe 在以下用例中的作用:

#!/bin/bash -xe

这些参数有什么作用以及记录在哪里?

scripting bash

82
推荐指数
2
解决办法
4万
查看次数

如何完全记录所有 bash 脚本操作?

从我的脚本输出中,我想捕获所有带有错误消息的日志数据,并将它们全部重定向到日志文件。

我有如下脚本:

#!/bin/bash
(
echo " `date` : part 1 - start "
ssh -f admin@server.com 'bash /www/htdocs/server.com/scripts/part1.sh logout exit'
echo " `date` : sleep 120"
sleep 120
echo " `date` : part 2 - start"
ssh admin@server.com 'bash /www/htdocs/server.com/scripts/part2.sh logout exit'
echo " `date` : part 3 - start"
ssh admin@server.com 'bash /www/htdocs/server.com/scripts/part3.sh logout exit'
echo " `date` : END"
) | tee -a /home/scripts/cron/logs
Run Code Online (Sandbox Code Playgroud)

我想查看文件中的所有操作 /home/scripts/cron/logs

但是我只看到了我在echo命令后放置的内容。

如何检查SSH命令成功的日志?

我需要收集所有日志。我需要它来监视脚本中每个命令的结果,以便更好地分析脚本失败时发生的情况。

scripting linux ssh bash log-files

77
推荐指数
4
解决办法
28万
查看次数

测试用户帐户和密码的工具(测试登录)

是的,我可以启动虚拟机或远程设备并尝试输入密码……我知道……但是有没有一种工具或脚本可以模拟登录,足以确认或否认密码正确?

设想:

服务器服务帐户的密码被“忘记”...但我们认为我们知道它是什么。我想将凭据传递给某些东西,并让它以“正确的密码”或“不正确的密码”反击。

我什至想过一个驱动器映射脚本,其中传递了该用户帐户和密码,以查看它是否成功映射了驱动器,但在使其正常工作的逻辑中迷失了......类似于:

-Script 通过 msgbox 请求用户名 -script 通过 msgbox 请求密码 -script 尝试将驱动器映射到每个人都可以访问的公共共享 -script 如果成功则取消映射驱动器 -script 返回弹出 msgbox 说明“正确密码”或“不正确”密码”

任何帮助表示赞赏......你会认为这将是一种罕见的情况,不需要工具来支持它但是......好吧......

scripting windows login password

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