我正在编写一个需要根级别权限的脚本,我想这样做,如果脚本不是以root身份运行,它只是回应"请以root身份运行".并退出.
这是我正在寻找的一些伪代码:
if (whoami != root)
then echo "Please run as root"
else (do stuff)
fi
exit
Run Code Online (Sandbox Code Playgroud)
我怎么能最好(干净,安全)完成这个?谢谢!
啊,只是为了澄清:(做东西)部分将涉及运行内部和自身需要root的命令.因此,以普通用户身份运行它只会出现错误.这只是为了干净地运行需要root命令的脚本,而不在脚本中使用sudo,我只是在寻找一些语法糖.
例如bash,在C/C++中众所周知的前向声明是否有类似的东西或至少类似的东西(解决方法)?
或者有这样的事情,因为例如它总是一次性执行(一行一行)?
如果没有前向声明,我该怎么做才能使我的脚本更容易阅读.它相当长,这些函数定义在开始时与全局变量混合,使我的脚本看起来很难看,难以阅读/理解)?我要求学习一些这些案例的知名/最佳实践.
例如:
# something like forward declaration
function func
# execution of the function
func
# definition of func
function func
{
echo 123
}
Run Code Online (Sandbox Code Playgroud) 在emacs,您可以使用Ctrl+ X, Ctrl+ 打开新文件F
和去与以前的文件Ctrl+ B,并转到下一个文件Ctrl+ N.
如何在nano文本编辑器中执行此操作?虽然nano启动,然后打开新文件,以及如何在打开的文件之间切换nano文本编辑器?
如何在Linux中附加VHDX或VHD文件?
我的意思是将虚拟硬盘作为块设备附加,并使用外部工具来读取这些设备.
里面的文件系统不可安装.我不需要挂载文件系统,但是就像它在真正的硬盘上一样处理它.
我阅读了手册页guestfish,但找不到怎么做.
亲爱的程序员,
我正在使用C#Visual Studio 2013编写代码,我刚刚意识到我可能不需要使用Trim()它Replace(" ", string.Empty).
一个例子如下:
SanitizedString = RawString
.Replace("/", string.Empty)
.Replace("\\", string.Empty)
.Replace(" ", string.Empty)
.Trim();
Run Code Online (Sandbox Code Playgroud)
因为我以前的代码结构不同,我没有注意到它:
SanitizedString = RawString.Trim()
.Replace("/", string.Empty)
.Replace("\\", string.Empty)
.Replace(" ", string.Empty);
Run Code Online (Sandbox Code Playgroud)
我知道这些方法的工作方式不同,因为Trim()删除了所有空白字符,而Replace(" ", string.Empty)只删除了空格字符.
这就是为什么我有一个不同的问题.
我没有看到任何明显的方法来实现与替换.我的问题是,当我希望从字符串中删除所有空白字符时,我将如何处理它?
我找到了以下内容:
但由于我从未使用正则表达式,我对如何将其应用于字符串犹豫不决?
碰巧我,Delphi XE6 IDE 忘记TFrame了我过去创建的所有后代.
更具体地说,当我单击标准 - >框架时,选择我的框架的对话框不再显示.
相反,它显示以下错误消息:
没有框架可供插入.可以从File | New | Other选项创建新帧.
有办法纠正这种情况吗?
EDIT1重现的步骤很遗憾:我真的不确定这是怎么发生的,但事实确实如此.我认为从某些版本的Delphi升级到另一个版本时可能存在罪魁祸首.因为我随着时间的推移多次升级,我记得在Delphi 7中启动项目,然后有一些版本我不记得哪些版本,我使用的最后两个版本是XE2,直到现在是XE6.
Edit2如果在XE2之前使用Delphi版本创建了框架,则会发生这种情况.
系统:Linux Mint 19(基于Ubuntu 18.04)。
编辑器:我使用带有 ShellCheck 插件的Visual Studio Code(官方网站)来即时检查错误、警告和提示。
是每个 shell 脚本编写者的必备工具。
尽管开发人员必须付出巨大的努力使其尽可能好,但它有时会产生不相关的警告和/或信息。
示例代码,带有此类消息(警告SC2120 + 直接相邻信息SC2119):
am_i_root()
# expected arguments: none
{
# check if no argument has been passed
[ "${#}" -eq 0 ] || print_error_and_exit 1 "am_i_root" "Some arguments have been passed to the function!\\n\\tNo arguments expected.\\n\\tPassed: ${*}"
# check if the user is root
# this will return an exit code of the command itself …Run Code Online (Sandbox Code Playgroud) 仅凭对 C 的最低限度的了解,我将以下代码放在一起,我在 Linux Mint 19 上编译了这些代码:
gcc-7 -o getPixelColor getPixelColor.c -L/usr/X11/lib -lX11
Run Code Online (Sandbox Code Playgroud)
并在没有参数的情况下执行:
./getPixelColor
Run Code Online (Sandbox Code Playgroud)
gcc-7 -o getPixelColor getPixelColor.c -L/usr/X11/lib -lX11
Run Code Online (Sandbox Code Playgroud)
题:
我不知道为什么输出数字不在标准RGB 范围内:0-255?
当前输出示例(取自桌面图片,[0,0]):
./getPixelColor
Run Code Online (Sandbox Code Playgroud)
预期输出(使用 Wine 运行的 Windows 颜色选择器获取):
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>
void get_pixel_color(Display *d, int x, int y, XColor *color)
{
XImage *image;
image = XGetImage(d, RootWindow(d, DefaultScreen(d)), x, y, 1, 1, AllPlanes, XYPixmap);
color->pixel = XGetPixel(image, 0, 0);
XFree(image);
XQueryColor(d, DefaultColormap(d, DefaultScreen(d)), color);
}
int main(int argc, char const *argv[])
{ …Run Code Online (Sandbox Code Playgroud) IDE:我使用Visual Studio 2015 Update 3(语言:C#,.NET 4.5).
问题:编译发布解决方案时,会生成PDB文件.
问题:如何在Visual Studio 2015中禁用PDB文件创建?