sh脚本在线调试
㈠ 怎么在网站上运行SH脚本
什么网站
㈡ 怎么在网站上运行SH脚本
如何区分php脚本是在shell下运行还是在web上浏览
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/243)的形式标明文章原始出处和作者信息及本声明。
一般我们使用php是作web开发用的,但php也能够在shell下运行,就像bash、python脚本一样,方式一是通过php -r或php -f命令(nix和win下都可用),另一种方式是在php文件的前面加上“#! /usr/bin/php”,并chmod +x xxx.php。
虽然php程序在这两种情况下运行的结果基本一致,但还是有所区别的,首先他们使用不同的php.ini配置文件,这个以前就说过了;其次两种情形下输出信息的时候要略微不同,在cli方式下运行,输出信息的分行一般使用回车就够了,而在web下浏览的时候,还要多加上一个
;最后得到参数的方式不同,cli下可以直接取argv数组,而web下则要通过$_GET数组。
那么有什么方法让我的脚本自动判断是处于哪种运行模式下,从而选择不同的处理方法呢?通过对比cli和web方式下phpinfo()反馈信息的不同,我发现基本可以用环境变量$ENV[""]来判断,当采用php -f方式执行的时候,$ENV[""]的值是/usr/bin/php,即执行文件的名称,当设置了“#! /usr/bin/php”并运行xxx.php时,$ENV[""]的值是./xxx.php,也是执行文件的名称,最后在web方式下浏览的时候,$ENV[""]的值是/usr/sbin/apache2,即解析php文件并反馈信息的web服务器执行文件的名称。那么,基于这个环境变量的值,我们就可以判断出程序的运行模式,并选择不同的处理方法了。下面是一个简单例子的源代码(cli_web.php),输出结果为得到的所有命令行或者get参数。
#! /usr/bin/php
<?php
if ((‘/usr/bin/php’ == $_ENV["_"]) //php -r …
|| ($_SERVER["SCRIPT_FILENAME"] == $_ENV['_'])) //chmod +x xxx.php and run itself
$is_cli = true;
else
$is_cli = false;
//Set line break string and argument array
if ($is_cli)
{
$s_br = “\n”;
$ar = $_SERVER['argv'];
unset($ar[0]); //self-name of this script
}
else
{
$s_br = “
\n”;
$ar = $_GET;
}
$s = implode($s_br, $ar);
$s .= $s_br;
echo “Got arguments: $s_br$s”;
?>
上面的代码在cli模式下运行结果为:
$ ./cli_web.php a b c d
Got arguments:
a
b
c
d
在web浏览方式下返回html代码为(访问形式为http://…../cli_web.php?a=1&b=2):
#! /usr/bin/php
Got arguments:
1
2
基本达到设计要求,只是web浏览方式下的“#! /usr/bin/php”不知怎么才能去掉,它不在<?php ?>包含范围内,无法使用ob_clean()清除,希望哪位路过的达人不吝赐教。
㈢ 如何调试windows的 shell扩展
首先脚本需要有执行权限chmod u+x file.sh执行脚本有三种方法:
1. ./file.sh
特点:开启bash子进程来执行,也就是开启额外的进程来进行,不影响原进程的变量、配置等
2. bash file.sh
特点:和./file.sh相同
3. source file.sh 或者 . file.sh
特点:在原bash进程中执行脚本。
第三种方法主要用于在脚本中切换用户su、切换目录cd等命令。
source 和 . 命令是相同的。
你可以搜索 source
补充,如何查看脚本运行是否开启了bash子进程
vim file.sh
写入
#!/bin/bash
#echo $$命令会输出bash进程ID
echo $$
保存并赋予可执行权限chmod u+x file.sh
在你的shell中输入,echo $$ 屏幕输出4176
./file.sh 屏幕输出3600
bash file.sh 屏幕输出3984
source file.sh 屏幕输出4176 和 你直接在shell中输出的一样,说明是在同一个bash进程
㈣ python 怎么实现 shell 的 sh -x 这种调试功能
这种调试只适合shell,因为它的脚本相对来说,普遍比较简短。
而大多Python IDE都会有断点调试,相比更灵活适用。
㈤ 怎么在网站上运行SH脚本
在网站上运行 SH 脚本? 你说的是shell吗
㈥ 怎么在网站上运行SH脚本
Subversion是一个强大的版本控制系统,特别是它能够轻松地处理库管理进程中在各个点上的数据。在进行提交后、或者进行提交前,或锁定、或解锁文件中,或者在其它情况下,你都能拥有脚本句柄数据。所有的这些都是通过hook实现的,hook是subversion库结构中的一部分。Hook 由一个库事件来触发的。例如,如果你有一个subversion库存放在/subversion/repos/packages下,那么你的hook将被存放在/subversion/repos/packages/hooks目录下。
在这个hook目录下存放着大量的临时文件。这些文件只是作为例子来存在。所以如果你想写一个脚本能在每次提交后,把subversion数据用e -mail发送给你的话,你应该拷贝post-commit.tmpl到post-commit中,把它变为可执行的,并按照你的需要去编辑它。
这些脚本能从subversion网站上获得,同时也有些其它用户提供的脚本和工具。你能在subversion.tigris.org/tools_contrib.html上浏览到许多这样的脚本。目前最感兴趣的是邮件提交的(post-commit e-mail)脚本commit-email.pl。把这个文件下载下来,并把它放在/usr/local/bin/下面,然后使它变成可执行的。同时在 hooks/post-commit脚本中,在该文件末尾增加上以下内容:
REPOS=""
REV=""
/usr/local/bin/commit-email.pl "$REPOS" "$REV" --from [email protected] -s
"SVN commit in packages" [email protected]
这个将执行的commit-e-mail.pl脚本会带有一些参数,也就是库名和你做的修订。它将按照指定的主题路线从 [email protected]网站上发送e-mail到[email protected]上,[email protected]网站上有些指定的用户或者邮件列表。
如果你想在站点上查看其它的脚本,你可以在版本控制软件库的管理器中看到许多有趣的脚本。在整个数据被提交到subversion之前,这些脚本能够做某些检查,比如,各种预提交检查脚本。
㈦ 如何调试shell脚本各种方法都说说。
方法一:sh -x script.sh
-x选项会将运行到的脚本内容显示在屏幕上,前面有个+号。这样就知道哪句被执行到了。对调试很有帮助。
方法二:在脚本中使用debug开关
适用于只调试部分脚本的情况。
set -x
......(要调试的代码段)
set +x
然后sh script.sh运行脚本
方法三:在脚本中添加打印
比如搞个log输出函数,专门用于打印调试相关信息。
_log()
{
if [ "$_DEBUG" = "true" ]; then
echo "调试信息"
fi
}
只要在外面控制$_DEBUG开关即可。
㈧ 如何调试linux shell脚本
最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间。
shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。
shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误。
linux/unix shell l脚本调试方法
Shell提供了一些用于调试脚本的选项,如下所示:
-n
读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来
使用这些选项有三种方法,一是在命令行提供参数
$ sh -x ./script.sh二是在脚本开头提供参数
#! /bin/sh -x第三种方法是在脚本中用set命令启用或禁用参数
#! /bin/sh
if [ -z "$1" ]; then
set -x
echo "ERROR: Insufficient Args."
exit 1
set +x
fiset -x和set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。
㈨ 怎么在网站上运行SH脚本
一般的网站都不会提供给你这个功能的,否则安全性会收到外界的威胁。
如果是自己的网站,可以在后台cgi编程时,运行编入进去的SH脚本,不赞成这样做。