sh是自版本7 Unix以来的标准Unix shell。 POSIX具有基于Bourne Shell的标准化shell行为,并且可移植shell脚本应符合标准化语法。将此标记用于适用于Bourne / POSIX样式shell的问题。对于有错误的shell脚本,请在发布此处之前在http://shellcheck.net中查看它们。
当我通过 system() 执行 bash -i >& /dev/tcp/127.0.01/12340 0>&1 时,我得到: 语法错误:错误的 fd 编号 但是当我执行 bash -i >& /dev/tcp/127.0.01/123... 时没有错误
为什么 devspace 命令无法通过 npm 或 powershell 识别 Windows 上的“sh.exe”?
我正在尝试按照官方文档在 Windows 操作系统上安装 devspace https://www.devspace.sh/docs/getting-started/installation?x0=6 通过 powershell 或 npm,它安装成功,但是当...
我有以下.cnf [ 政策匹配 ] 国家/地区名称 = 匹配 州或省名称 = 匹配 组织名称 = 匹配 组织单位名称 = 可选 通用名称 = 提供 电子邮件地址...
Dockerfile 自动构建子文件夹中的所有 csproj 文件
我正在构建一个具有插件架构的应用程序,因此源可以包含许多不同的插件(但在同一文件夹中排序),如下所示: 源代码 - Dockerfile - 主要项目 - 主要项目。
我尝试了“sh -c [某些别名]”,但这不起作用,而直接运行它就可以了 ~/.bashrc `alias ll=" ls -alF "` zsh 中也存在同样的问题,从技术上讲我可以...
在 shell 脚本中,我正在启动一个长时间运行的后台进程。初始化后,该进程会写入许多行输出。在我的 shell 脚本中,我想继续执行后续命令...
bash 是否承诺在简单情况下将 -c 优化为普通 exec?
考虑以下 bash 调用 bash -c '睡眠 99' 假设我运行它,在等待它完成睡眠时,我在另一个终端中运行 ps 。 那样的话,我确实找到了 sleep 99
我在 cron 上编写了 script.sh,但它不起作用。 谢谢您的帮助 我尝试记录脚本 我无法读取日志,因为它说权限被拒绝。 我尝试给 Debian 所有者...
我在使用下面提供的代码中的modify_record函数时遇到了麻烦。我可以使用 awk,但我的老师告诉我们使用 sed。有人可以帮忙吗? 菜单() { 回声“cho...
我有一个 shell 脚本和一个 python 脚本,组织如下(不能更改目录结构): ~ ├── a.py ├── b └── c.sh MWE 如下: c.sh #!/bin/sh rcfile=$(mktemp) 出口...
我有一个 docker compose 文件,可以在我的 Windows/WSL 环境中正常工作。我正在尝试将其部署到 Ubuntu 服务器。我收到以下错误,无法准备上下文:路径“/home/dev/
假设我需要在包含客户详细信息的现有 csv 文件的第一个单元格(不是逐行)中附加以下内容,我该如何实现它, 内容待补充...
如何从利用 npm 工作区的 mono-repo 容器化单节点应用程序
我有一个包含 4 个节点包的 mono-repo: / └── 应用程序 ├── app1 ( "依赖项": { "lib1": "../../libs/lib1" } ) └── app2("依赖项": { "lib...
如何在 bash shell 中使用 AND 运算符在 if 语句中使用 bash 算术计算 2 个变量
我有一个字母数字字符串,比如“XXXX24Y2”,我只从中提取了数字并将它们分配给2个变量,比如num1和num2,比如num1=24和num2=2 现在我...
我的要求是将新标题添加到现有的 CSV 文件中,该文件的第一行已经有一些标题。我需要在现有标题的末尾添加新标题。的价值...
我有一个heredoc,需要从主脚本调用现有变量,并设置自己的变量以供稍后使用。像这样的事情: 计数=0 ssh $other_host < 我有一个heredoc,需要从主脚本调用现有变量,并且设置自己的变量以供稍后使用。像这样的东西: count=0 ssh $other_host <<ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo output ENDSSH 这不起作用,因为“输出”没有设置为任何内容。 我尝试使用这个问题的解决方案: count=0 ssh $other_host << \ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo output ENDSSH 也没有用。 $output 被设置为“string2”,因为 $count 没有扩展。 如何使用从父脚本扩展变量的定界文档,并且设置自己的变量? 您可以使用: count=0 ssh -t -t "$other_host" << ENDSSH if [[ "${count}" == "0" ]]; then output="string1" else output="string2" fi echo "\$output" exit ENDSSH 我们使用\$output,以便它在远程主机上而不是在本地扩展。 最好不要使用 stdin(例如使用此处文档)将命令传递给 ssh。 如果您使用 命令行参数 来传递 shell 命令,您可以更好地分离本地扩展的内容和远程执行的内容: # Use a *literal* here-doc to read the script into a *variable*, $script. # Note how the script references parameter $1 instead of local variable $count. read -d '' -r script <<'EOF' [[ $1 == '0' ]] && output='zero' || output='nonzero' echo "$output" EOF # The variable whose value to pass as an argument. # With value 0, the script will echo 'zero', otherwise 'nonzero'. count=0 # Use `set -- '$<local-var>'...;` to pass the local variables as # positional arguments, followed by the script code. ssh localhost "set -- '$count'; $script" 你可以像@anubhava所说的那样转义变量,或者,如果转义的变量太多,你可以分两步完成: # prepare the part which should not be expanded # note the quoted 'EOF' read -r -d '' commands <<'EOF' if [[ "$count" == "0" ]]; then echo "$count - $HOME" else echo "$count - $PATH" fi EOF localcount=1 #use the unquoted ENDSSH ssh [email protected] <<ENDSSH count=$localcount # count=1 #here will be inserted the above prepared commands $commands ENDSSH 将打印类似以下内容: 1 - /usr/bin:/bin:/usr/sbin:/sbin
如何在现有的 csv 文件中添加新标题,该文件中已经有一些标题
我的要求是将新标题添加到现有的csv文件中,该文件的第一行已经有一些标题,我需要在现有标题的末尾添加新标题,th的值...
以下代码在 netbeans 中运行良好,但在使用 shell 脚本的终端中运行不正常。如果有人有任何想法,请分享。 test3cron.php 以下代码在 netbeans 中运行良好,但在使用 shell 脚本的终端中运行不正常。如果有人有任何想法,请分享。 test3cron.php <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ @ob_start(); session_start(); $callbackUrl = "http://mgstore/test3cron.php"; $temporaryCredentialsRequestUrl = "http://mgstore/oauth/initiate?oauth_callback=" . urlencode($callbackUrl); $adminAuthorizationUrl = 'http://mgstore/admin/oauth_authorize'; $accessTokenRequestUrl = 'http://mgstore/oauth/token'; $apiUrl = 'http://mgstore/api/rest'; $consumerKey = 'd9a371ca7661bee18de8d75f50b7e386'; $consumerSecret = '51486d1b2bd688a927a3eced64ed803e'; error_reporting(E_ALL ^ E_NOTICE); if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) { $_SESSION['state'] = 0; } try { $authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI; $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType); $oauthClient->enableDebug(); $oauthClient->disableSSLChecks(); if (!isset($_GET['oauth_token']) && !$_SESSION['state']) { $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl); $_SESSION['secret'] = $requestToken['oauth_token_secret']; $_SESSION['state'] = 1; header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']); exit; } else if ($_SESSION['state'] == 1) { $oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']); $accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl); $_SESSION['state'] = 2; $_SESSION['token'] = $accessToken['oauth_token']; $_SESSION['secret'] = $accessToken['oauth_token_secret']; header('Location: ' . $callbackUrl); exit; } else { $oauthClient->setToken($_SESSION['token'], $_SESSION['secret']); $resourceUrl = $apiUrl . "/customers?page=400&limit=1"; $oauthClient->fetch($resourceUrl, array(), 'GET', array("Content-Type" => "application/json", "Accept" => "*/*")); $customerList = json_decode($oauthClient->getLastResponse()); } if (is_array($customerList) || is_object($customerList)) { foreach ($customerList as $object) { $entityid = $object->entity_id; echo "ENTITY ID:" . "$entityid" . "<br>"; $name1 = $object->firstname; $name2 = $object->lastname; $customersince = $object->created_at; echo "Created at:$customersince<br>"; $name = $name1 . " " . $name2; echo "NAME:" . "$name" . "<br>"; $email = $object->email; echo "EMAIL:" . "$email" . "<br>"; } } } catch (OAuthException $e) { print_r($e); } 当我在 netbeans(shift+f6)中运行上述脚本时,我得到以下输出: ENTITY ID:167 Created at:2015-07-31 12:37:04 NAME:shahid md EMAIL:[email protected] 相同的脚本,我尝试在终端中运行如下,但它显示空输出。 cron.sh #!/bin/bash SCRIPTPATH=$( cd $(dirname $0) ; pwd -P ) PHP='/usr/bin/php' # tailf /var/log/cron cd $SCRIPTPATH # TO RUN ALL CORN JOBS $PHP -q test3cron.php 以下命令用于运行脚本文件: 但我在这里什么也没得到。 rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$ ./cron.sh rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$ 我也尝试了以下链接: https://magento.stackexchange.com/questions/75414/running-the-magento-rest-api-php-example rizwan@rizwan-Inspiron-3520:~/PHP-workspace/mgstore$ php -S localhost:8088 test3cron.php **Response as follows:** PHP 5.5.9-1ubuntu4.11 Development Server started at Tue Aug 11 10:32:54 2015 Listening on http://localhost:8088 Document root is /home/rizwan/PHP-workspace/mgstore Press Ctrl-C to quit. 您已通过 @ob_start(); 启用了输出缓冲,但您从未结束输出缓冲 (ob_end_flush();)。此外,设置 error_reporting(E_ALL ^ E_NOTICE); 会禁用报告 NOTICE 错误(只需将其设置为 -1)。 您还可以从 CLI 脚本访问 $_SESSION。这可以工作,但它可能不会达到您的预期。 但是,在我看来,这里实际发生的情况是,您只是输入了一条不会产生任何输出的执行路径。请看这里: if (!isset($_GET['oauth_token']) && !$_SESSION['state']) { $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl); $_SESSION['secret'] = $requestToken['oauth_token_secret']; $_SESSION['state'] = 1; header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']); exit; 由于这不是 HTTP 请求,因此不会设置 $_GET['oauth_token'],并且 $_SESSION['state'] 将为 0,因此为 false。它所做的只是获取一个令牌,输出一个标头,然后退出脚本。我敢打赌,如果您在代码的该分支中添加 echo,您会看到它被打印出来。我推荐的调试方法是在整个过程中添加 echo 语句并跟踪代码的执行路径。
为什么我必须在 k8s livenessProbe exec 命令(以及可能在其他地方)中指定 - sh - -c - 命令而不是仅 - 命令
我正在尝试在 livenessProbe 中执行命令,我已经以交互方式连接到容器并测试了命令: “退出$(测试$(日期+%H)-eq 3 && echo 1 || echo 0)” 哪位亲...
我正在尝试在我的 Express 应用程序中使用 nginx,并且我正在按照此处的教程进行操作 https://cloud.google.com/community/tutorials/deploy-react-nginx-cloud-run 然后最后我看到了这个命令 命令...