{"id":1130,"date":"2021-11-19T23:42:21","date_gmt":"2021-11-19T23:42:21","guid":{"rendered":"https:\/\/fadyanwar.com\/?p=1130"},"modified":"2021-11-20T09:22:08","modified_gmt":"2021-11-20T09:22:08","slug":"powerfx-linux-shell-scripting","status":"publish","type":"post","link":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/","title":{"rendered":"PowerFx Linux Shell Scripting"},"content":{"rendered":"\n<p class=\"has-drop-cap\">Having recently been able to run PowerFx on Linux and eventually on Raspberry Pi made me curious (and a bit greedy?) about how far can I stretch the PowerFx capabilities. You see, PowerFx have been so far so isolated and contained within the realm of Microsoft Power Platform and even by having my hands on its source code, yet I had to wonder what good is it if I can&#8217;t connect it to the external world? <\/p>\n\n\n\n<p>Then I had this idea, can I turn into something like Python, with a command line interpreter where you can write scripts and run it from shell? That would be nice, but it so happens that such a command line interpreter for PowerFx does not exist yet! So how about trying to build one? If I manage to get a working interpreter for PowerFx it would be pretty neat.<\/p>\n\n\n\n<p>Let&#8217;s start by saying that managing to pull this off on Linux wasn&#8217;t exactly straightforward, as getting the correct configuration in place to get this working was quite tricky. So for the sake of experimentation I&#8217;m keeping this pretty simple omitting many details as in validation and error handling. So this is by no means production grade code.<\/p>\n\n\n\n<p>I&#8217;ve based this command line interpreter on the sample repo used on my previous article. I&#8217;ve only made a small modification so it would read script files and ignore lines starting with &#8216;#&#8217; which we will see why later.<\/p>\n\n\n\n<p>You will see that most of the modification I&#8217;ve done is on the Main() where I encapsulated the original code for expression matching and evaluation in a method called ParseLine() and then added command line argument handling and file IO to load scripts as shown below.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignfull\"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n public static void Main(string&#x5B;] args)\n        {\n            ResetEngine();\n\n            Console.WriteLine(&quot;Microsoft Power Fx Console Formula REPL, Version 0.2&quot;);\n\n\n            if (args.Length &gt; 0)\n            {\n                foreach (string line in System.IO.File.ReadLines(args&#x5B;0]))\n                    if (line.StartsWith('#'))\n                        continue;\n                    else ParseLine(line);\n\n                return;\n            }\n\n            Console.WriteLine(&quot;Enter Excel formulas.  Use \\&quot;Help()\\&quot; for details.&quot;);\n            \/\/ loop\n            while (true)\n            {\n                \/\/ read\n                Console.Write(&quot;\\n&gt; &quot;);\n                var expr = Console.ReadLine();\n\n                ParseLine(expr);\n\n            }\n        }\n\n<\/pre><\/div>\n\n\n<p>I will spare you the copy and paste and provide you the modified repo to clone directly using the below git command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/fadyanwar\/power-fx-host-samples.git<\/code><\/pre>\n\n\n\n<p>You might need however to modify the csproj to have your installed targetframework instead of netcoreapp3.1 shown below or install .net core 3.1 as detailed on my previous article.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignfull\"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n  &lt;PropertyGroup&gt;\n    &lt;OutputType&gt;Exe&lt;\/OutputType&gt;\n    &lt;TargetFramework&gt;netcoreapp3.1&lt;\/TargetFramework&gt;\n  &lt;\/PropertyGroup&gt;\n\n  \n<\/pre><\/div>\n\n\n<p>Next you will need to build the project using the publish option so all the binaries would be included in a single folder then create a bin folder in your home directory so you can copy that publish folder into it after.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dotnet publish power-fx-host-samples\/Samples\/ConsoleREPL\/\nmkdir bin\ncp -r power-fx-host-samples\/Samples\/ConsoleREPL\/bin\/Debug\/netcoreapp5.0\/publish\/* bin\n\n<\/code><\/pre>\n\n\n\n<p>Confirm that you have everything in place in the new bin folder in your home directly by typing<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls ~\/bin<\/code><\/pre>\n\n\n\n<p>You should see the publishing output as below<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"121\" src=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-2.png?resize=550%2C121&#038;ssl=1\" alt=\"\" class=\"wp-image-1140\" srcset=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-2.png?w=550&amp;ssl=1 550w, https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-2.png?resize=300%2C66&amp;ssl=1 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p>Also if you execute the ConsoleREPL like below you should see the below output of the sample REPL console which you can exit by typing in Exit()<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/bin\/ConsoleREPL <\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"101\" src=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-3.png?resize=457%2C101&#038;ssl=1\" alt=\"\" class=\"wp-image-1143\" srcset=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-3.png?w=457&amp;ssl=1 457w, https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-3.png?resize=300%2C66&amp;ssl=1 300w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/figure>\n\n\n\n<p>Now the interesting part. You will create a soft link to ConsoleREPL binary file so you can call it with a different name which would be in our case powerfx for our new command line name. Then we will add the folder to our $PATH environment parameter so the system can see it when powerfx is invoked.<\/p>\n\n\n\n<p>cd bin<br>ln -s ConsoleREPL powerfx<br>export PATH=$PATH:$HOME\/bin<\/p>\n\n\n\n<p>After this you will be able to type powerfx anywhere in shell and get to the REPL console.<\/p>\n\n\n\n<p>Note that if you wish this new command to be available next time you open the shell you will need to add it or your shell .profile or .bashrc files. You might find that the home bin folder is already there. If you type powerfx now in the command line you will get the same output of the ConsoleREPL since the link you had created is pointing at it now.<\/p>\n\n\n\n<p>Next we will create our PowerFx script. Using your prefered text editor copy and paste the below lines into a new file named script.pfx as shown below. I personally prefer nano text editor.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!bin\/powerfx\n\nText(\"Hello World!\")<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"509\" src=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-4.png?resize=722%2C509&#038;ssl=1\" alt=\"\" class=\"wp-image-1145\" srcset=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-4.png?w=722&amp;ssl=1 722w, https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-4.png?resize=300%2C211&amp;ssl=1 300w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<p>When done, save your work and run the below command to make the script executable.<\/p>\n\n\n\n<p>chmod +x script.pfx<\/p>\n\n\n\n<p>Then here is the fun moment. Using your new command line interpreter type in the below command to invoke the script directly.<\/p>\n\n\n\n<p>.\/script.pfx<\/p>\n\n\n\n<p>If all is good, you should get the below result. If so,  you have just written and executed your first PowerFx hello world script on Linux, congratulations!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"738\" height=\"288\" src=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?resize=738%2C288&#038;ssl=1\" alt=\"\" class=\"wp-image-1153\" srcset=\"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?w=738&amp;ssl=1 738w, https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?resize=300%2C117&amp;ssl=1 300w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/figure>\n\n\n\n<p>Hopefully you have learnt something new from this article. If so, I would appreciate it if you share it with a friend who might find this interesting. Feel free to play around with this and give me a shout online with your work. I would be more than happy to hear from you and see what have you done with it. Thanks for reading!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Having recently been able to run PowerFx on Linux and eventually on Raspberry Pi made me curious (and a bit greedy?) about how far can I stretch the PowerFx capabilities. You see, PowerFx have been so far so isolated and contained within the realm of Microsoft Power Platform and even by having my hands on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1153,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_vp_format_video_url":"","_vp_image_focal_point":[],"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[21,20,22],"class_list":["post-1130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-linux","tag-powerfx","tag-scripting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PowerFx Linux Shell Scripting - Fady Anwar<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PowerFx Linux Shell Scripting - Fady Anwar\" \/>\n<meta property=\"og:description\" content=\"Having recently been able to run PowerFx on Linux and eventually on Raspberry Pi made me curious (and a bit greedy?) about how far can I stretch the PowerFx capabilities. You see, PowerFx have been so far so isolated and contained within the realm of Microsoft Power Platform and even by having my hands on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/\" \/>\n<meta property=\"og:site_name\" content=\"Fady Anwar\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-19T23:42:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-20T09:22:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-6.png\" \/>\n\t<meta property=\"og:image:width\" content=\"722\" \/>\n\t<meta property=\"og:image:height\" content=\"509\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fady Anwar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fadyanwar\" \/>\n<meta name=\"twitter:site\" content=\"@fadyanwar\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fady Anwar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/\"},\"author\":{\"name\":\"Fady Anwar\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#\\\/schema\\\/person\\\/b66e3277ceba346f7053a83464e90b03\"},\"headline\":\"PowerFx Linux Shell Scripting\",\"datePublished\":\"2021-11-19T23:42:21+00:00\",\"dateModified\":\"2021-11-20T09:22:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/\"},\"wordCount\":760,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#\\\/schema\\\/person\\\/b66e3277ceba346f7053a83464e90b03\"},\"image\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/fadyanwar.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/image-7.png?fit=738%2C288&ssl=1\",\"keywords\":[\"Linux\",\"PowerFx\",\"Scripting\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/\",\"url\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/\",\"name\":\"PowerFx Linux Shell Scripting - Fady Anwar\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/fadyanwar.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/image-7.png?fit=738%2C288&ssl=1\",\"datePublished\":\"2021-11-19T23:42:21+00:00\",\"dateModified\":\"2021-11-20T09:22:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/fadyanwar.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/image-7.png?fit=738%2C288&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/fadyanwar.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/image-7.png?fit=738%2C288&ssl=1\",\"width\":738,\"height\":288},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/index.php\\\/2021\\\/11\\\/19\\\/powerfx-linux-shell-scripting\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fadyanwar.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PowerFx Linux Shell Scripting\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#website\",\"url\":\"https:\\\/\\\/fadyanwar.com\\\/\",\"name\":\"Fady Anwar\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#\\\/schema\\\/person\\\/b66e3277ceba346f7053a83464e90b03\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fadyanwar.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/fadyanwar.com\\\/#\\\/schema\\\/person\\\/b66e3277ceba346f7053a83464e90b03\",\"name\":\"Fady Anwar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g\",\"caption\":\"Fady Anwar\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PowerFx Linux Shell Scripting - Fady Anwar","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/","og_locale":"en_US","og_type":"article","og_title":"PowerFx Linux Shell Scripting - Fady Anwar","og_description":"Having recently been able to run PowerFx on Linux and eventually on Raspberry Pi made me curious (and a bit greedy?) about how far can I stretch the PowerFx capabilities. You see, PowerFx have been so far so isolated and contained within the realm of Microsoft Power Platform and even by having my hands on [&hellip;]","og_url":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/","og_site_name":"Fady Anwar","article_published_time":"2021-11-19T23:42:21+00:00","article_modified_time":"2021-11-20T09:22:08+00:00","og_image":[{"width":722,"height":509,"url":"https:\/\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-6.png","type":"image\/png"}],"author":"Fady Anwar","twitter_card":"summary_large_image","twitter_creator":"@fadyanwar","twitter_site":"@fadyanwar","twitter_misc":{"Written by":"Fady Anwar","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#article","isPartOf":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/"},"author":{"name":"Fady Anwar","@id":"https:\/\/fadyanwar.com\/#\/schema\/person\/b66e3277ceba346f7053a83464e90b03"},"headline":"PowerFx Linux Shell Scripting","datePublished":"2021-11-19T23:42:21+00:00","dateModified":"2021-11-20T09:22:08+00:00","mainEntityOfPage":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/"},"wordCount":760,"commentCount":0,"publisher":{"@id":"https:\/\/fadyanwar.com\/#\/schema\/person\/b66e3277ceba346f7053a83464e90b03"},"image":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?fit=738%2C288&ssl=1","keywords":["Linux","PowerFx","Scripting"],"articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/","url":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/","name":"PowerFx Linux Shell Scripting - Fady Anwar","isPartOf":{"@id":"https:\/\/fadyanwar.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#primaryimage"},"image":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?fit=738%2C288&ssl=1","datePublished":"2021-11-19T23:42:21+00:00","dateModified":"2021-11-20T09:22:08+00:00","breadcrumb":{"@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#primaryimage","url":"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?fit=738%2C288&ssl=1","contentUrl":"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?fit=738%2C288&ssl=1","width":738,"height":288},{"@type":"BreadcrumbList","@id":"https:\/\/fadyanwar.com\/index.php\/2021\/11\/19\/powerfx-linux-shell-scripting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fadyanwar.com\/"},{"@type":"ListItem","position":2,"name":"PowerFx Linux Shell Scripting"}]},{"@type":"WebSite","@id":"https:\/\/fadyanwar.com\/#website","url":"https:\/\/fadyanwar.com\/","name":"Fady Anwar","description":"","publisher":{"@id":"https:\/\/fadyanwar.com\/#\/schema\/person\/b66e3277ceba346f7053a83464e90b03"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fadyanwar.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fadyanwar.com\/#\/schema\/person\/b66e3277ceba346f7053a83464e90b03","name":"Fady Anwar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g","caption":"Fady Anwar"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/a9172040bbc3bbe24fb49d59dac20da030af1f5ff628126c979a1d4b71eaed41?s=96&d=mm&r=g"}}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/fadyanwar.com\/wp-content\/uploads\/2021\/11\/image-7.png?fit=738%2C288&ssl=1","jetpack_sharing_enabled":true,"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/posts\/1130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/comments?post=1130"}],"version-history":[{"count":20,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/posts\/1130\/revisions"}],"predecessor-version":[{"id":1157,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/posts\/1130\/revisions\/1157"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/media\/1153"}],"wp:attachment":[{"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/media?parent=1130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/categories?post=1130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fadyanwar.com\/index.php\/wp-json\/wp\/v2\/tags?post=1130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}